The "following" flag could get set in several places where it was not
obvious that the customer name would be remembered. Since the shopkeeper
should always get angry at the current player, set the name at the same
place that the flag is set.
Make wielding Werebane confer defense against catching lychanthropy
from monster bites. It doesn't protect against catching that from eating
lycanthrope corpses and might blast the character if wielded at such time.
Also fix artifact handling to recognize the character as lycanthrope
while in normal human/elf/whatever form--rather than only when in beast
form--just like it does for monsters.
Treat strangling a pet with a cursed leash like a regular monster
kill; you'll get experience, lose pacifism conduct, and suffer various
pet-killer effects. Also do some minor damage and reduce tameness for
the case where the pet is described as being choked but isn't killed.
<email deleted> wrote:
> comments: When I try to write in the dust, with my finger, on a
> tombstone, it works the first time, but after that I'm getting a
> message that I can not erase what's written here. Is that an
> intentional way of preventing us gaining a bunch of levels fighting
5 days, no objections to proposed code change.
While an object is being thrown, it isn't on any list. This means that
killing a shopkeeper with an unpaid object wouldn't be able to clear the
unpaid bit. By the time the object lands, the shopkeeper is gone, and then
it's too late. Added a new global to track a thrown object, set it and later
clear it in throwit(), also clear it as needed in dealloc_obj(), and check
it in setpaid(). It should be possible to use this global to avoid losing
thrown objects during hangup saves as well. But that can wait.
<Someone> reported to the list that steeds didn't remember traps
encountered while mounted. When not mounted, a monster will remember
traps, even when they don't damage the monster. To that end, added code to
set the steed's mtrapseen mask.
mention msg_window in the Guidebook and long online help. I didn't update
hh since that only has one-liners. Also made the msg_window default clear
in the Guidebook and opthelp. Plus, an update to Guidebook.txt in hopes
that it won't need another before release.
a few plines that were without punctuation. There may be more non-DEBUG
pline or pline-like things that are still missing punctuation. They are
almost impossible to find after the fact, since they could be anywhere,
including in various dat files and functions that pass strings and formats
into other functions that call pline.
The initial report thought this was related to summoning help. It's not.
moveloop would attempt to call you_were() even when you_were() would not
actually change your form. Certainly there's a layering problem here, but
for now, just put in the same check peffects() uses to avoid calling
you_were() unnecessarily.
Try to fix the reported bug of not waking up if sleeping on ice
that gets melted out from under you. This fixes the straightforward
case but I suspect there are other permutations that it doesn't cover.
Teleporting out of water is now blocked if asleep; waking up occurs
after the chance for that has passed.
Update the comments to [try to] more accurately describe the behavior.
Also add hallucination handling and make the probe effect be more likely
to occur (or to put it another way, make the stun effect be less likely
since one or the other always takes place--except when stun is superseded
by something more severe).
When printing invalid player names in -s mode, it was possible to overflow
the output buffer due to a missing buffer size check. On shared Unix-like
systems with executable stacks, this could be used as a security exploit,
eg to obtain a shell running as user or group games.
While I was at it, removed a dead block of "#if 0" code
Revamp the Magicbane code so that it won't result in "<monster>
turns to flee" followed by "the magic-absorbing blade scares <monster>".
In the process I noticed that resistance checks for its scare and purge
effects were based on the character's experience level regardless of who
was wielding it or who its target was.
I didn't try to retain the exact behavior it had before, but the
new behavior is pretty close. The main differences are that the "purge"
effect is now called "cancel" and that the stun effect will be less
common now and always gives feedback when it occurs. It used to combine
stun with scare and/or purge in some cases, now it won't; and it used to
always scare when purging, now it will pick one or the other.
To fix Magicbane's message sequencing, its code needs to be redone
substantially. These changes make that easier.
cancel_monst() let caller know whether cancellation succeeds
resist() give artifact weapons a resistance attack rating
vtense() handle monster names and "you" as subjects; checking against
object names and descriptions pointed out a couple of other
words that would have ended up being miscategorized.
<email deleted> wrote:
> On Sun, 12 Jan 2003 15:40:33 +0100, <Someone>
> <email deleted> wrote:
>
> >You begin praying to Anu. You are surrounded by a shimmering light.
> >You finish your prayer. You feel that Anu is well-pleased.
> >Your stomach feels content.
> >You are feeling mildly nauseous.
>
> Huh.
>
> sh-2.03$ grep nauseous *.c
> pline.c: if (Vomiting) Strcat(info, ", nauseated"); /*
> !"nauseous" */
> potion.c: if(talk) You_feel("much less nauseous now.");
> timeout.c: "are feeling mildly nauseous.", /* 14 */
>
> Well, pline.c has it right. Nauseated means feeling sick. Nauseous
> means sickening to contemplate.
Second opinion (dictionary.com):
> Usage Note: Traditional critics have insisted that nauseous is
> properly used only to mean causing nausea and that it is
> incorrect to use it to mean affected with nausea, as in Roller
> coasters make me nauseous. In this example, nauseated is
> preferred by 72 percent of the Usage Panel. Curiously, though, 88
> percent of the Panelists prefer using nauseating in the sentence
> The children looked a little green from too many candy apples and
> nauseating (not nauseous) rides. Since there is a lot of evidence
> to show that nauseous is widely used to mean feeling sick, it
> appears that people use nauseous mainly in the sense in which it
> is considered incorrect. In its correct sense it is being
> supplanted by nauseating.
>More worrying is the fact that applying a figurine over water lets
>the monster wait until its next move before it drowns (giving
>you time to teleport it to safety, or whatever) [...]
>Should there be a minliquid() check as part of make_familiar()?
Applying at the water location next to you was easy. But
applying it at your own location (triggering BY_YOU) could
end up placing the figurine at the far side of the level if
there was lots of water.
Correcting that required the ability to pass a flag from
make_familiar to makemon() telling it to not rule out
water locations as good positions. The flag had to
be passed on down to goodpos() and enexto().
The bulk of this patch is just adding an additional
argument to goodpos() in all of the callers.
> If you remove a ring of warning, see_monsters() is called to make
> sure that the numbers get removed from the display. However, if
> your only source of warning is experience level and you get
> drained and feel "less sensitive", it isn't, and they're not.
I don't know whether there were any other odd situations besides moving
onto known traps being caused by the out of date value in flags.run; several
places do check to see whether it's 8.
Provide a way to have a port-specific debug-mode commands
if PORT_DEBUG is defined at build time.
Add a win32 keystroke checking routine to assist debugging
of international keyboards.
Fix a problem with the way NetHack was handling
international keyboards by letting ToAscii() come
up with an input character based on the virtual key,
and the shift and caps lock state.