From the newsgroup a while back - special levels w/o a specific alignment
should inherit their alignment from the dungeon. Some places explicitly
checked the dungeon if the level alignment wasn't set, at least one did not.
<Someone> reported (in April) that eating cursed tripe, for example, did
not violate vegetarian conduct. This patch moves the various conduct
checks into common code that is executed before the rotten state of food is
determined.
Implement Pat's suggestion of setting the mavenge flag when a covetous
monster flees, since they may subsequently teleport back and attack even
if mflee is set.
<Someone> reported that dowaternymph and dowaterdemon did not print a message
when their G_GONE checks failed. Now they do. I wasn't feeling
imaginative, so the the dowaterdemon message is the same as for no snakes.
When !GOLDOBJ, player polymorphed to a rust monster that attempted to eat
gold in the inventory would fail to eat it, but the gold would be consumed
anyway. Under GOLDOBJ, a later check would work around the invalid prompt.
The seetrap() was done for trapdoors & holes independent of whether a
message was printed. Move the seetrap call into fall_through where
the message logic lives (Sokoban holes always activate).
Reported that player polymorphed into an exploding monster does not explode
when attacking thin air. Also noticed that if player is Unchanging, they
wouldn't die after exploding in the existing code. Set u.mh = -1 to ensure
they won't still be around after exploding.
based on a bugfix forwarded by <Someone>, check for closed doors and drop
the missle before it. I re-arranged the pre checks a bit so m_throw no
longer needs to trust the caller to ensure everything is OK beforehand.
<Someone> reported that dropping gold on an altar prints no message.
As a side effect, gnostic conduct was never affected, which seemed odd;
dropping other known objects would still affect your gnostic conduct.
While fixing this, I noticed a GOLDOBJ-related bug when dropping gold while
levitating.
Change "The corpses smell like it could be tainted! Eat it anyway?"
to be "The corpses smell like they could be tainted! Eat one anyway?"
when eating one of multiple stacked food objects.
a frozen (possibly sleeping) monster cannot be grateful unless it wakes up.
From a bug report. The pit case can only happen if mfrozen is
non-zero, but other traps may leave msleeping set as well.
<Someone> reported this during 3.4.0 beta. If you are blind and levitating,
unseen monsters are shown as "I", just like when not levitating, but they
are never erased after they move, unlike not levitating. Display this
case correctly as well.
Reported to the mailing list on 5/23. To fix this, u.usteed cannot simply
be unset earlier, so I put a check for this special case into enlightenment().
<email deleted>
Sent: Thursday, June 13, 2002 12:03 PM
Subject: Beta 1 comments
> The description of Y monsters will be updated in the Guidebook
> 'monsters' option list to match mon_explain[], I assume? (Yes, yes,
> documentation :-)
<email deleted>
Sent: Thursday, June 13, 2002 12:03 PM
Subject: Beta 1 comments
> Headstone writing still uses the adjective "weird" when engraving with
> a wand of digging.
> Below is the result of your feedback form. It was submitted by
> <email deleted> on Tuesday, June 4, 2002 at 21:04:54
> After alt-Q or F)ile, Q)uitting, it is still possible to F)ile, S)ave your
> game. By doing this after you are shown your inventory [fully identified] and
> attributes (It must be done before the last "Do you want to view your %1"
> dialog is answered--usually conduct), which means you can know what you are
> holding-- although it won't be officially identified. But you can use it to
> avoid putting on, say, an amulet of strangulation by mistake.
Based on a report from <Someone>, avoid calling rn2(ml) when ml == 0.
Since level 0 monster always fail in their spells, just skip the whole
loop looking for a good spell.
Make all the quest nemesis monsters resist stoning so their death messages
make sense. Some already did resist. Stoning seems like such a trivial
way to overcome a quest nemesis anyway. If it were to be allowed, multiple
death messages would be needed in the quests.
I'm surprised that no one has noticed this one yet. When
wielding two weapons, naming either of them caused two-weapon
combat mode to stop (unless the weapon already had another name
which was long enough to be overwritten by the new name without
allocating a replacement object).
From the newsgroup: creating Sting via naming didn't produce
intrinsic warning (orc detection) if it was already wielded at the
time. (Un- and re-wielding it sufficed as a workaround.)
Reported to the mailing list. If you set your monster symbol options, and
use ';' and select a known invisible monster by screen, a crash would occur
accessing a null pointer.
Reported directly to the list. If you are not the wizard and start nethack
on the command line with the -D flag (or -X), the game reports that you're
entering discover mode but does not actually do it. The flags.explore in
the save file overwrote the new value. Save the flag while reading flags
if discover mode was requested.
Add an optional paniclog file, controlled by a new PANICLOG macro that can
be used to log all panic and impossible messages. Helpful when people
forget to send, or didn't see, the message.
Moves the remaining platform-specific options
to their own section of the Guidebook and documents
the "video:autodetect" option required for tiles on MSDOS.
when investigating the report of death due to falling off steed leaving
"you were riding" in the final attributes. (This doesn't fix that bug.)
Dismounting calls teleds() to put the character on the map and teleds()
does various iron ball manipulations, but during level change the ball
is removed from the map and those manipulations won't work as intended.
As per <Someone>:
> I had a game today where I was polymorphed (by a sink) into a mimic, and
> #monster-ed (hid). The symbol on the map for me was ]. Then, I polymorphed
> again, this time into a kobold lord -- but the symbol remained ]. This
> seems wrong.
Handle this similar to the polyman code.
longtime bug in damageum, if hero is poly'd to something with fire damage,
and hits a paper or straw golem, mondead will get called twice for the
monster. Fix this, by working like AD_CURS does no clay golem. Also, make
sure no scrolls, et al, get dropped by disallowing a corpse.
Fix the reported bug of being double-billed for a bag of
holding destroyed if #loot is used to put a wand of cancellation
into it while it's on a shop floor. (The bug report neglected
to mention a second aspect of the situation: you wouldn't get
billed for the wand if you used an unpaid one to trigger this.)
There's a check in doloot that's supposed to disallow looting nearby
monsters if you loot a container at the current location. But, it only
worked if you looted the last container. Make the behavior consistent.
The worn bits, et al, were not all cleared when the shopkeeper grabbed your
pack. This currently affects only alternate (non-twoweap) and quivered
objects. This could lead to a panic or a crash.
[I've lost the #Rxxx number for this bug report....]
When attacking a non-stone golem with a cockatrice corpse,
suppress the redundant "<monster> turns to stone" message which
preceeded the "<monster> solidifies. It's now a stone golem."
messages.
From the newsgroup: using #chat to talk to a "meditating"
monster like quest nemesis or Medusa could elicilit responses
without waking it up (at least if you moved fast enough enough
to probe it before it got its next turn).
From the newsgroup:
> Apparent bug or weird-seeming feature:
> If you try to mount a horse that is already in a pit,
> you get the message "You lead the poor <foo> into a pit!"
I checked into fixing this properly (you mount the steed and
then shared its trapped status without actively retriggering the
trap in the process), but the trap code is too convoluted to do
that cleanly. So this "fix" just makes mounting attempts fail if
the steed is trapped.
(This diff is mostly whitespace cleanup.)
Add FOUNTAIN directives to the maps that just had '{' symbols.
Without them, the special level loader sets up those maps in a way
that prevents nethack from keeping the fountain counter accurately,
resulting in lack of fountain noises when they haven't been touched
yet and persistent noises after at least one of them has been dried
up. (It would be better to fix lev_comp's map handling code to do
this automatically.)
This fixes a long worm display bug. The bug wasn't really in the worm code, it
was in goodpos(). goodpos() could place worm segments on top of one another.
If you split a worm when the tail was located on top of the head, the tail
would be removed from the screen, making the head seem to vanish.
If you first pushed an undiscovered boulder while blind with ESP and
there's a monster behind it, you'd get a message referring to the boulder
but the boulder wasn't displayed. Move the feel_location test.
Also, improved the grammar of the message a bit.
u.umonnum was used to create the corpse in a bones file. However, unless
you're polymorphed and manage to actually die in that form, u.umonnum
refers to a role monster, which all have M2_HUMAN set, so they're all
human. Even if the role monsters were mutated dynamically when the game
starts, the problem would still exist, just in a different form.
Use urace to determine the corpse type instead.