Instead of adding a new artifact.h to pray.c, remove the existing
ones from attrib.c, invent.c, and mkobj.c. This also updates the Unix
and VMS editions of Makefile.src; having stale dependencies in those
for other ports could cause unnecessary recompilation but can't break
anything in this case.
This was caused by taking a copy of the name
prior to a later delobj for use in the message.
The name would always be plural if there was
more than one, so that pluralized name would
be used even if only one of the stack was
destroyed. Sometimes the name saved
was "scrolls labeled XXXX."
This patch simply saves a pluralized name
and a single version and uses the
appropriate one in the message, rather
than introducing splitobj() complications.
A relatively recent change to prevent #ride letting you move in
a way you could walk (squeeze through a tight a gap or enter doorway
diagonally) resulted in crashing due to access violation or segfault
if you tried to mount toward a spot that didn't contain any monster.
Noticed while testing saddle cursing; tried to mount while stunned....
Also, if the character had a saddle "worn" in weapon, alternate
weapon, or quiver slot, it didn't get unworn when applying the saddle
to a mount. The next time the player tried to equip something in the
same slot there'd be a warning message; I don't know whether any more
serious symptoms could occur.
The change to fix a typo of `max(action,2)' to `min(action,2)'
for the trouble fixing effect of prayer made it impossible to get
rid of a loadstone or welded weapon by praying at non-altar locations.
That's an awfully drastic change in game balance for a typo fix....
This boosts the 2 to a 3, allowing the worst minor trouble to be
eligible for fixing.
That's a one line change; the rest of this is stuff that I've
been waffling over about whether to hold for the next big release or
to include in the patch release. It cleans up the trouble handling
code a bit--particularly the two competing choices for selecting a
piece of cursed equipment--and adds fumbling and cursed saddle as new
categories of minor trouble.
Condense the two artifact hit messages a bit so that fighting
with Mjollnir isn't quite so verbose. And make the same change for
the non-existant magic missile launching artifact(s).
<Someone> reported that killing yourself by picking your current
monster class as the target of a blessed scroll of genocide while
polymorphed and wearing an amulet of unchanging would result in
"killed by genocide" rather than "killed by a scroll of genocide".
That wasn't the only problem here; it also ended the game right away,
before genociding the rest of the class of monsters; that could affect
the contents of a resulting bones level.
Also, the 3.3.0 race/class split resulted in getting the message
"you feel dead inside" twice if you were a human or elf character who
genocides '@' while polymorphed into some non-@ form.
If the character was invisible without being able to see invisible,
his location on the map showed any object there or underlying topology
instead of the hero even when monsters could be seen with infravision,
ESP, or sustained monster detection. The ESP case required an amulet
or helm or quest artifact to be noticeable because being blind overrides
being unable to see invisible, so the more common form of telepathy
didn't exhibit this behavior.
Implement <Someone>'s suggestion for addressing <Someone>'s
complaint about the inadequate feedback given when dipping a unicorn
horn into a potion to convert it into water. (Mainly, if the potion
has already been given a name, you won't be prompted to give it one
when dipping transforms it; if that was the last one you had, getting
"The potion clears." isn't sufficient to let you keep track of what
type of potion was cleared. You still have to keep track of such
stuff yourself, but now you'll get "The swirly potion clears." so you
at least don't have to start remembering or recording the type prior
to dipping.)
The hallucination handling isn't very useful; the description is
given will full accuracy by the immediately following inventory update.
Make touchstones more convenient to use after they're identified
by only listing unknown gems as likely candidates. This doesn't prevent
other stuff from being rubbed on them, just alters the prompt string and
the subset of inventory shown for '?'.
Removing a ring of protection/strength/constitution/charisma
which has been made unknown by amnesia might reveal what it is due
to status line changes, so relearn it when that happens. This also
consolidates the three characteristic enhancing types into one case.
Implement's <Someone>'s suggestion that the currently wielded
weapon be included among the list of inventory candidates for the
wield command. It affects the list of letters shown in the prompt
and the subset inventory displayed if you respond with '?'; it doesn't
change how wielding works or what item you can pick to wield.
Do the same thing for quivering: include any currently quivered
item among the choices. Also include the secondary weapon as a choice
if you're not actively two-weaponing.
Add <Someone>'s patch that enables using the apply command
on eucalyptus leaves to produce a whistle effect. Blessed leaves
behave like magic whistles; I added a chance for the blessing to be
used up in the process.
The invent.c diff is almost all reformatting.
Add <Someone>'s "eye of newt" patch, which confers energy
when eating a newt corpse. Consumed energy is restored by up to 3
points, and if that takes the character past max energy there's a
chance to boost the latter by 1 point. I introduced randomization
so that level 1 characters can't just kill and eat all the newts on
the first couple of levels to unconditionally boost their initial
mana (22% chance per newt to increase max energy now instead of his
original 100% chance).
Fix the reported problem of applying a figurine while swallowed
and getting a message about setting the figuring on the ground. Rather
than coming with special messages, just prevent it would activating if
you're swallowed at the time.
Also prevent figurines from creating the 4th erinys or 10th Nazgul.
I'm not sure whether to bother doing similar handling for stone-to-flesh
cast on statues.
Curse and bless status has no meaning for gold. Likewise
for erosion and other object flags controlling whether an item is
considered to be fully identified.
Noticed by code inspection: the inventory scan to find leashes
in use didn't reset the monster traversal loop for each leash, so
with more than one active it wouldn't necessarily find and check the
monster attached to the second one.
Polymorphing into creature with horns such as a minotaur,
will cause your helmet to fall off if it is made of a hard material.
Only minotaurs pass the has_horns() test in include/mondata.h
because the complaint specifically referred to them, but that
should perhaps be reviewed at some point by someone who is
certain which creatures have horns growing from their
head (some demons?)
The ^X attributes were always showing "neuter" when polymorphed
into a non-humanoid creature. This fix also suppresses the extra
"gender (base)" entry when that has the same value as the preceding
"gender" entry, it eliminates the redundant label "deity" from the
three entries in the deities section, and it capitalizes the alignment
names that nethack uses as proper nouns.
This patch also introduces the capability of skipping the second
screen of enlightenment attributes (given for explore and wizard modes)
by terminating the first screen with ESC (or however else menus can be
explicitly cancelled for any given interface). That has no noticeable
effect during normal play.
Some newsgroup discussion has reminded me something I've meant
to do for a long time. Stop running when you get the special message
about the floor vibrating under your feet. Also vary it when you're
not actually stepping on the ground.
I was about to add a message referring to your steed and discovered
that the name handling for that is somewhat messy. Simplify it by using
the pet name handling routine.
The current version of VMS is V7.3-1, but V7.1 is the most
recent that I presently have access to (and that's only for Alpha
but I'm bumping the number for VAX anyway). The "DEC" part has
been obsolete for a while but I'm not sure what to do about that.
Move a block of kicking code so that freeing items stuck inside
solid work takes precedence over breaking open containers. Now the
box has a chance to fall out like other types of objects (and if it
fails that chance, there's just the normal message about not coming
loose--no attempt to actually kick open the box will occur).
winhack.h is not being used anywhere now and can safely be deleted.
There 2 instances of this file:
sys\wince\winhack.h
win\win32\winhack.h
The patch is also attached that adjusts for this.
From a bug report:
3.4.0 broke the ability to pick the only listed inventory letter when
user typed '?' during object selection and one candidate was listed on
the top line followed by --More--.
What do you want to throw? [b or ?*] ?
b - 7 +0 daggers (alternate weapon; not wielded).--More--b
<behaved as if user hit ESC instead of 'b' but didn't say "Never mind.">
(Dismissing --More-- the normal way and getting a new selection prompt
worked as usual.) The problem was caused by changes in getobj's count
handling; the message_menu() routine isn't able to handle counts but
display_pickinv left the count as 0 while caller expects -1 for "count
not specified".
This was a core bug but I put the fixes entry under "tty" since
no other interfaces are affected.
Expert and skilled detect treasure was changed to behave like
blessed object detection in 3.3.1, but it didn't work as intended.
> Subject: [patch] skilled detect treasure doesn't detect object types
> <email deleted>
> Date: 13 Sep 2002 09:58:41 -0400
> <email deleted>
>
> It looks like the detect treasure spell when cast with skilled or expert
> ability in divination is supposed to detect the type of an object ("a
> scroll of identify" rather than "a scroll"), but this doesn't actually
> work in 3.4.0. Here is a fix.
The fact that a pet was starving to death got recorded with its
corpse; if that corpse was revived via undead turning, the resulting
monster would immediately starve again if it stayed tame. Similarly,
if one got petrified while nearly starved, reanimating the statue would
produce a starving pet. Make revival and reanimation use the same code
as life-saving, where hunger status gets reset.
Allow starving pets to consume items they wouldn't ordinarily
eat. Carnivores will eat fruits and vegetables--such as they are--
and herbivores will eat assorted rations. Even though eating such
rations doesn't violate vegetarian conduct for the character, horses
would never eat them.
This change should allow players to keep mundane steeds alive
much longer. The new behavior doesn't kick in until the pet has
been classified as starving though; it doesn't affect ones who are
merely hungry.
This also gives the reason why a starving pet has died instead
of just saying "<pet> dies" whenever it starved with hit points left.
<Someone> reports that someone on the
newsgroup tried to use the MSVC 1.52c (16 bit compiler) Makefile
with MSVC 6 (32 bit compiler). Try to make it more obvious
that the Makefile isn't for that.
Noticed while testing something recently: if you're wearing
a non-cursed ring of levitation but can't remove it because of
some other cursed item, you'll never get the high priority result
of TROUBLE_LEVITATION when praying. This remedies that.
Provide more control over message handling for monsters' use
of equipment. This fixes the statue revival problem (inappropriate
feedback when monster puts on speed boots) mentioned in the earlier
"intrinsics of dead monsters" patch.
Monster traits that are used to revive some corpses or statues
with their old attributes were retaining intrinsics conferred by worn
items. To prevent that, strip such attributes at time of a monster's
death before the traits are recorded. Statue handling needs to some
more work; now that extra speed is lost, there's an out of place
message if/when a revived statue gets to put on its old speed boots.
Partially deal with the reported silly message combination
> Also, when unwielding a weapon using 'A', you get the messages
> "You are empty handed. You finish disrobing."
by saying "disarming" rather than "disrobing" when manipulating
just the three weapon slots. Handling weapons in combination
with armor or accessories or both still says "disrobing" though.
The case when dealing with just accessories should pick something
else, but the closest I've thought up so far is "divesting" and
I don't think that works very well. Is there a better term for
taking off jewelry? If so, would it end up being out of place
when applied to nethack's selection of eyewear?