Commit Graph
100 Commits
Author SHA1 Message Date
nethack.rankin 619f9fccf8 cmdassist enhancement again
>      [...] it also suppresses the message about how to disable
> cmdassist in this case.

     Well it would have done so if I'd used the right diff....
2004-01-10 03:29:30 +00:00
nethack.rankin 8d6f610b37 cmdassist enhancement
Implement the patch sent by <email deleted>
to make responding with '?' at the "what direction?" prompt ask again
after giving the `cmdassist' direction display.  I did it slightly
differently than was done in the submitted patch but the result is the
same except that it also suppresses the message about how to disable
cmdassist in this case.
2004-01-10 03:23:55 +00:00
nethack.rankin b8991129a8 pit access
Fix the recently reported problem:

" If there is a corpse in a pit, you have to enter the pit in order to pick
" it up, however you are can eat it without being in the pit.

If pit bottoms aren't reachable, then can_reach_floor() needs to know
about it.  I suspect that this change is likely to create some other
bugs though.
2004-01-04 08:54:16 +00:00
nethack.rankin 99413fcd04 fix steed-in-trap message grammar when hallucinating
Fix the recently reported bug about the wording of trap messsages
when hero's steed has a name but hallucination prevents that name from
being used, yielding "You lead poor wombat into a pit!" and the like.

     I accidentally deleted the message so can't reply to the sender.

[Before applying this patch, take a look at the POLY_TRAP case of the
switch statement in steedintrap().  A misplaced brace has drawn the
default case into one of its `if' statements.  Evidently it's valid C
syntax, but someone among us must have access to a compiler or lint
checking tool which is capable to diagnosing such things.]
2003-12-27 02:45:47 +00:00
nethack.rankin 4a2dc925bb fix incorrect plural of Nazgul
Incorporate <Someone>'s patch to skip adding of a final "s" to
"Nazgul" when pluralizing.
2003-12-23 02:32:17 +00:00
nethack.rankin 712771f4f7 fix U796 - minor wording 'bug'
"You push the boulder into the pool" should be "Your steed pushes
the boulder into the pool" if done while riding since that's how other
boulder pushing messages are handled.
2003-12-18 05:00:47 +00:00
nethack.rankin a4a80fdbca back into test mode
Post-release, reset to BETA status to indicate development since
there's no ALPHA.  And use BETA to enable the latent RNG checks.
2003-12-13 15:01:49 +00:00
nethack.rankin 41d3ad8c4e wizard mode ^V crash in endgame
Mentioned in passing in the newsgroup:  level teleporting in the
endgame--which is only possible in wizard mode--can crash if you're
confused.  The change to make confusion sometimes override teleport
control means that sometimes a random destination will be chosen, and
the routine to choose a random level can call rn2() with a value less
than 1 in the endgame, possibly resulting in attempt to divide by 0.

     There's something fishy about the min_/max_depth stuff for the
endgame, but I haven't attempted to figure that out.  This just makes
the random destination always be the current level when in the endgame
so that the problem can't come up.
2003-12-13 14:51:38 +00:00
nethack.rankin 0dc3c43a8d montraits usage (trunk only)
Move a couple of recently added corpse revival/statue animation
fixups into montraits() so that its callers don't have to worry about
them anymore.
2003-12-10 06:33:25 +00:00
nethack.rankin 887d2defd1 vms version bit (trunk only)
Corresponding change for the development code:  make the Makefile
comment match the recently revised code.
2003-12-09 02:54:08 +00:00
nethack.rankin f98e7d1fe6 vms version bit (trunk only)
Similar to the branch change; partial version number update for
the vms default build configuration.
2003-12-07 19:10:31 +00:00
nethack.rankin 2e28abcd5a fix the "big abuse" reported a few days ago
It was possible to get a shopkeeper to carry the Amulet from the
bottom of the dungeon up to the location of his shop, thereby bypassing
the usual labor of lugging it up yourself.  [Drop the Amulet somewhere;
rob a shop so that the Kops are summoned and the shk comes after you;
when shk is next you, level teleport to the Amulet (probably two hops,
one to the Valley and another deeper into Gehennom); walk to the vicinity
of the Amulet; shk will eventually pick it up (shopkeepers like to pick
up magic items); now, pay him for the stolen goods--he'll be pacified
and migrate back to his shop, taking his inventory with him; lastly,
return to his shop and relieve him of his burder.]  This patch makes
shopkeepers drop the Amulet or invocation tools if/when they set set to
migrate to their normal location.

     Also fix another long standing risk that a monster that is sent
away (nurse when healing, Kops when you pacify a shopkeeper) might be
carrying the Amulet or one of the invocation tools and make the game
unwinnable.  I doubt that that's ever actually happened but I think it'd
be possible if a monster that likes magic items ever got polymorphed
into a Kop.  Such dismissed monsters will now drop the same stuff as
the shk above prior to leaving the game.
2003-12-06 14:08:51 +00:00
nethack.rankin 4d7a39e563 #U770 part II - lack of "miss" message when throwing gold at monster
There was no feedback when gold was thrown or kicked at monsters
who weren't interested in catching it.  Now it'll give the same "<obj>
misses <monster>" message as other thrown or kicked items objects which
don't hit.
2003-12-05 11:37:37 +00:00
nethack.rankin 9860caf748 fix U770 - grammar bug: The gold pieces hits the [monster]
Report was for scattering gold during a land mine explosion, but the
message was delivered by the widely used hit().  Bug was caused by a typo
in vtense() when handling a subject containing a space.
2003-12-05 08:54:32 +00:00
nethack.rankin 3df53e952c loadstone dropping fix
Fix the reported problem of bad inventory management if the user
specified a count (with traditional menu style) when attempting to drop
part of a stack of cursed loadstones.  After the "you can't drop that"
message, it tried to undo the stack split, but splitobj was changed
sometime back and the undo hack wasn't adjusted to account for the fact
that it needed to merge with the previous object instead of the next one.
The result was that it would incorrectly increment the count of the next
item instead of the original loadstone, or crash in canletgo() if the
split off stone was the last item in the list.

     This prevents cursed loadstones from being split (via getobj()'s
count handling) in the first place, so there's nothing to undo later.
It still uses a similar kludge so that the "can't drop that" message can
be adjusted, but it's now a simpler kludge and I hope a more robust one.
2003-12-03 07:10:24 +00:00
nethack.rankin a87296c814 fix B03001 - spelling mistakes in Guidebook
Minor problems <Someone> pointed out about the shop section.
[I've only tested the LaTeX variant this time.]
2003-12-02 15:08:59 +00:00
nethack.rankin f761b02c8d lint bits
and some reformatting.
2003-12-01 14:42:37 +00:00
nethack.rankin fbfb8e92ab corpse revival and statue animation (trunk only)
Try to address the problem From a bug report:  turning the Wizard
of Yendor to stone preserves monster information with his statue and
presence of that information overrides the statue animation check
intended to prevent players from creating the Wizard (or other unique
monsters).  That's ok for the current game--the monster had to have been
in play in order to be turned to stone--but is a problem if the statue
is found in a bones file.  The report was for placing such a statue at
the location of an untriggered statue trap by a player who leaves bones,
but stone-to-flesh by the player who loads bones is a simpler way to
trigger this.  (Aside from getting unique monsters earlier than usual
under some degree of player control they won't have their starting
inventory so special items like the Candelabrum might not get created.)
Using undead turning to revive corpses found in bones was another way to
get into the same trouble (I thought corpses of special monsters were
already excluded from bones?).

     It looks like it's also possible to get strange quest behavior if
a corpse or statue of the leader or nemesis is brought into the dungeon,
left in bones, then revived by the second player, but I didn't attempt
to reproduce it.  More work is probably needed; this tightens up leader
handling a bit but doesn't do anything about the nemesis.  This patch
has already been spreading tentacles and I've got to cut it off....

     The patch discards saved monster traits for corpses and statues of
unique monsters while saving bones; reviving or reanimating them will
produce doppelgangers instead of the original monsters, same as stone-to-
flesh on wished-for statues behaves.  It also discards saved traits for
shopkeepers (also temple priests and vault guards--their traits weren't
saved in 3.4.2 though).  That info might be useable when the corpse or
statue is on the same level as the monster started (ie, where its special
room is located), but that's a complication I'm going to bypass.  This
patch also adds chameleon handling for statue activation--it wouldn't
have mattered in 3.4.2 since shapechangers didn't get their traits saved;
it does matter now but was omitted when trait-saving was extended to all
statues a while back.  (It adds chameleon handling to corpse revival too,
but they still don't get their traits saved with corpses so that's just
protection in case of future modifications.)

     Other bits:  `cant_create()' is renamed to `cant_revive()' since
the latter is a more signicant use than wizard mode <ctrl/G> handling.
Now save traits with nymph corses so that cancellation can be propagated
if they're revived; that doesn't matter much but matches statue handling
(where it was more important since it dealt with succubi as well as with
nymphs).  Explicitly initialize the shape-changer field of all monsters
instead of relying on implicit initialization to 0 (CHAM_ORDINARY).

     There'll be a *much* shorter patch for 3.4.3 which will have to get
by with most of these obscure problems--fortunately they're unlikely to
impact many (any?) players.
2003-11-30 21:19:01 +00:00
nethack.rankin b56641dc2e status bits
Declare structure before using it in prototypes, and declare atol()
for configurations which don't have or don't use <stdlib.h>.  (Some
#ifdef MICRO code for atoi at the end of system.h might need to be done
for atol too.)
2003-11-30 11:04:54 +00:00
nethack.rankin 3c29cbfeab poison messages (trunk only)
<Someone> reported something along the lines of

  "You are hit by a little dart."
[ "The dart was poisoned." -- this expected message was missing ]
  "The poison doesn't seem to affect you."

Remove the overloading of ``chance for fatal poison'' and ``thrown weapon''
(which reduces that chance, among other things) for the arguments passed to
poisoned() and change how it decides whether feedback about being poisoned
is needed.  Also, move poisoned() and poisontell() from mon.c to attrib.c.
2003-11-27 05:00:29 +00:00
nethack.rankin eb79553209 Guidebook update: "Shops"
Add a new section about shops to the Guidebook.  I don't think any
significant spoilers are revealed.
2003-11-26 08:37:08 +00:00
nethack.rankin d74990926c paniclog enhancement
Include the version number in paniclog entries, so there'll be more
information whenever someone forwards them to us.
2003-11-23 10:01:58 +00:00
nethack.rankin 17578658ce build fix (trunk only)
DEC C warned about a problem and that caused make to quit.

|        idx = (++idx % 2);
|........^
|%CC-W-UNDEFVARMOD, In this statement, the expression "idx=(++idx%2)"
|modifies the variable "idx" more than once without an intervening
|sequence point.  This behavior is undefined.
2003-11-23 09:47:34 +00:00
nethack.rankin 2db57166dc more El-bereth
Make the same change to Guidebook.tex, although it turns out not to
be needed here.
2003-11-22 04:25:26 +00:00
nethack.rankin 9d042ed2c4 redundant "you finish disrobing" messages
Just From a bug report:  getting interrupted and then
resuming would sometimes produce two instances of the "You finish" message
(and evidently consumed an extra turn in the process).  I think this is
an old problem and that it's just coincidence that it showed up right after
the patch dealing with avoidance of stale context for 'A'; the interruption
has to occur when there is just one turn left in removing the final item
so doesn't happen very often.
2003-11-21 08:08:49 +00:00
nethack.rankin 29f21b488c stethoscope use on corpses & statues (trunk only)
Prompted by the report that it was possible to check a corpse at an
adjacent spot while levitating:  substantially revamp the handling of
applying a stethoscope to corpses and/or statues.  Aside from the missing
reachability check, the old code suffered from grammar problems when
multiple corpses were present and it didn't try to figure out the gender
of the monster who left the corpse.

     This now lets non-healers check corpses and statues at any time
(previously that only worked for them while hallucinating).  For healers
it gives some new feedback:  when listening to a corpse, they'll be given
a hint if it (actually any corpse in the pile at that location) is going
to revive, and when listening to a statue they'll be given a hint if it
contains any items.  The existing hint when a statue is actually a trap
is still only given to healers.
2003-11-20 04:54:39 +00:00
nethack.rankin cf1b96c0e7 couple of new routines (trunk only)
Groundwork for forthcoming stethoscope fix:  add an object list
traveral routine (there must be something like this already, but I
couldn't find it...) and a couple of timer access routines.
2003-11-20 04:40:46 +00:00
nethack.rankin e989ae0b96 resuming interrupted 'A' command
[ Caveat:  compiles ok on branch code but only play tested on trunk code;
  the do_wear.c diff is a lot different between the two variants and the
  trunk one includes some whitespace cleanup. ]

     <email deleted> reported that having a spellcasting monster
destroy some armor while you're in the midst of using 'A' to take that
armor off would result in a crash.  The problem was actually more
widespread than that:  having a nymph steal worn items (accessories as
well as armor), or a succubus remove them, or being interrupted by monster
activity and then reading a scroll of destroy armor prior to resuming 'A'
could all produce a similar crash.  'A' relied on stale context and could
attempt to manipulate an equipment slot which had become empty, ultimately
leading to an attempt to dereference a null pointer.

     The 'R' command didn't have this problem since any accessory gets
removed immediately.  The 'T' command already had handling for this:
there's only one item to deal with and multi-turn take off only applies
to some of the slots; the donning() check followed by cancel_don() took
care of those.  Only 'A' was vulnerable to the problem and it wouldn't
necessarily need to be interrupted and resumed; loss of the current
multi-turn item or any pending item would be enough--but I'm not sure
whether such item loss could occur without also interrupting the current
activity, so resumption of previous 'A' was probably a requirement for
triggering the crash.

     This makes shield and shirt handling be similar to other types of
armor instead of relying on the fact that none of them need to have any
attribute adjustments when put on or taken off.  However, there are
still assumptions (the `cancelled_don' stuff) that some slots don't have
any eligible items requiring more than a single turn to use; that should
probably be changed.
2003-11-15 10:25:09 +00:00
nethack.rankin 23d3a146d9 autopickup exceptions
External names longer than 31 characters trigger a compiler warning
for me about truncation, and that causes make to quit.  So shorten the
two long names.  Also, call the cleanup routine for the FREE_ALL_MEMORY
configuration.
2003-11-15 08:09:18 +00:00
nethack.rankin bc06d02d24 deafness fix (trunk only)
Evidently the trunk code isn't undergoing much testing lately;
"you hear <blah>" messages have been broken for a couple of weeks now.
2003-11-10 08:09:15 +00:00
nethack.rankin 7232e52367 display bit for spellbook gift (trunk only)
From the newsgroup:  when invisible and unable to see invisible,
if successful prayer results in being given a spellbook you'll get the
message "an object appears at your feet" but the spellbook won't show on
the map.  Add a newsym() to force its location to be updated.  (I didn't
try to figure out why spellbooks use place_object() when all other divine
gifts use dropy() but that's why only this case has the display glitch.)

     This also fixes up the message vs map update sequencing for a couple
of other "at your feet" cases so that all of them use the same ordering:
first the message is given, then the object drops.

[Timing is the only reason not to put this simple change into 3.4.3.]
2003-10-28 06:55:18 +00:00
nethack.rankin ca476c0eb2 patchevel.h comment 2003-10-26 06:04:04 +00:00
nethack.rankin 95d01c00d0 charging tweak
Some newsgroup discussion recently pointed out that source comments
for scrolls of charging didn't match the actual charge increase performed
by that magic.  This bumps the values a little bit
 (uncursed: comment said 5 to 15, actual amount was 10 to 14, now 10 to 20;
  blessed: comment said 10 to 25, actual amount was 16 to 25, now 15 to 30)
and adjusts the comments to match the code.
2003-10-23 07:41:24 +00:00
nethack.rankin 5b9c03729c weapon skill tweak
Barbarians start with either a two-handed sword and an ordinary axe
or a battle-axe and a short sword.  The latter combination was the only
one among all the roles where the player couldn't enhance skills for
starting weapons to expert.  Fix that by allowing barbarians to become
expert in short swords; reduce potential capability with pick-axe/mattock
from expert down to skilled to compensate for the increase.

     This also addresses an earlier complaint that monks are no better in
martial arts than samurai even though the latter have lots of choices for
good weapon skills.  Reduce the martial arts limit on samurai from grand
master to just master; likewise with bare-handed combat for barbarians
and cavemen.  In this case there didn't seem to be any need to bump the
limit on anything else as compensation.

     I still think non-rogues shouldn't be allowed to become expert in
daggers (which means that ranger and valkyrie starting gear would need
to change slightly) due to how powerful throwing them is, but I haven't
included that change here.

     For the skills which have lower upper limits than before, existing
characters who have #enhanced their skills high enough with the previous
code will retain their higher-than-max skill ranking with the new code.
Characters who have exercised enough to advance to the old max but
haven't done so yet will be limited to the new max.
2003-10-23 07:12:03 +00:00
nethack.rankin 7ad89fbbdd lex update
This is a case where a one-line change to the scanner source produces
a large diff in the generated C code.
2003-10-23 06:30:43 +00:00
nethack.rankin 08639fdda8 some lint cleanup
Using
	gcc -Wall -Wshadow -Wpointer-arith -Wwrite-strings \
	    -Wmissing-braces -Wmissing-prototypes
with an old version of gcc.

mhitu.c: In function `hitmu':
mhitu.c:1176: warning: declaration of `buf' shadows previous local
options.c: In function `special_handling':
options.c:2712: warning: initialization discards `const' from pointer target type
options.c:2745: warning: initialization discards `const' from pointer target typ
trap.c: In function `dotrap':
trap.c:1111: warning: `saddle' might be used uninitialized in this function

The first one is no longer present in the trunk code.  The last one is
bogus as its wishy-washy wording suggests.
2003-10-21 05:59:33 +00:00
nethack.rankin 537718980d vms catchup
1) filename manipulation during restore
2) hangup handling in low level input routine
3) Makefile dependencies
4) version number update
2003-10-21 04:25:35 +00:00
nethack.rankin 0288c5321a animation of wielded statue
Fix the reported bug of problems after casting stone-to-flesh spell
on self while wielding a statue.  Pointers for worn items weren't kept in
sync and various potential symptoms could occur (most easily visible one
being that ')' falsely reported the no longer existing statue as still
wielded; report stated that one crash was observed).  This bug predates
3.4.2 and was probably present ever since stone-to-flesh got introduced.
2003-09-26 10:27:36 +00:00
nethack.rankin 0ee0cc96da vms catchup (context) 2003-09-26 09:56:38 +00:00
nethack.rankin b7529324a7 fixes typo
Plus a correction for an earlier entry.
2003-09-11 03:02:54 +00:00
nethack.rankin 951ca18e61 fix U640 - Medusa bug
Described in the newsgroup a while back and recently reported:  if
you had reflection and were invisible and had esp and were blind, Medusa
would turn herself to stone by looking at you.  When you're invisible,
she shouldn't be able to see your source of reflection so shouldn't be
affected by the gaze; that's how things work when you aren't blind but
the relevant code was being skipped when you are.

     Now esp is irrelevant for this and she'll see her reflected gaze
only when she can see you, regardless of whether you see it happen.
2003-09-11 02:45:55 +00:00
nethack.rankin acc58a75b2 fix B08001 - stone-to-flesh undoes cancellation
Prevent succubi from being fully restored via cycles of petrifying
and reviving.  It wasn't just a matter of saving traits; cancellation is
one of the monster traits which is explicitly reset when a monster gets
revived.  I think that probably makes sense, but this will override it
for succubi and incubi to prevent abuse; if they were cancelled at time
of petrification they'll remain cancelled when reanimated.  Likewise for
nymphs; even though the abuse facter isn't present, the cancel effect is
pretty similar for them so keep revivals similar too.

     This saves monster traits for every monster that gets turned into a
statue.  Unlike with corpses there's no stacking involved to make players
notice that each has become unique, so all such statues might as well all
reanimate just like they were instead of as new replacment monsters.
2003-08-24 18:32:58 +00:00
nethack.rankin d6db9e0d53 vms version update 2003-08-22 10:04:12 +00:00
nethack.rankin 28e4ed2d25 vms build fix
Noticed when trying out the "heck patch", where the name of the file
for the sanctum level was changed and I neglected to update my Makefile to
reflect that:  nothing was noticed if any files were missing when loading
them into a dlb container.  Populating the playground directory for the
non-dlb configuration suffered a similar problem.  Now the VMS playground
setup will issue a warning message if this happens (but not abort the
installation; perhaps it ought to do that as well...).

     Other ports have the same problem.  For example, Unix Makefile.top
relies on file globbing to build the dlb container; if a wildcard pattern
matches no files, dlb won't notice because the shell will have eaten the
offending pattern.  Likewise for its non-dlb configuration, where cp won't
notice.  However, this isn't a very interesting bug because it won't hit
when the distributed Makefiles correspond with the needed data files.
2003-08-22 09:59:15 +00:00
nethack.rankin 104847363a fix sleeping shopkeeper's gold handling
Make a sleeping or paralyzed shopkeeper wake up if you drop something
he's interested in buying (covers the recently reported case where dropping
gold failed to add credit, but picking it back up increased shop dept) or
if you use the 'p'ay command while owing money.  Sleeping shopkeeper is not
affected if you drop something he doesn't care about, or use 'p'ay when
there is no debt, or pick up shop goods (latter case is handled normally--
you'll owe money for the item even though the shk remains asleep).

     This makes shopping become a little easier--you aren't stuck waiting
for the shopkeeper to wake up if you actually want to pay for something--
in the rare case where the shopkeeper has been put to sleep, but it's an
awful lot simpler than any other reasonable way I could think of to deal
with the [lack of] credit problem.

     This makes the snoring message handling moot--it no longer exists.
(It wasn't very reasonable to begin with, because the program can't tell
whether mon->mfrozen is for timed sleep or timed paralysis so avoided
giving that message for temporary sleep.  There ought to be two separate
counters; probing is another case where vague messages are given because
the program can't tell the reason why a monster can't move.)
2003-08-22 08:39:57 +00:00
nethack.rankin 8b5d31eb01 fix "singular of null?" warning for info lookup
Guard against the pathological cases of ", <anything>" and
" called <anything>" strings that a user could type in to indirectly
trigger impossible().  Now they'll yield "no info about such things".
2003-08-14 02:40:24 +00:00
nethack.rankin f5b1090fdc fix B07001 - crystal ball bug
Applying a cursed crystal ball has a chance of detroying it; the
code to use up a charge wasn't taking that into account.
2003-08-14 02:25:36 +00:00
nethack.rankin fad1cd4b88 monster level teleporting fix
From newsgroup discussion:  prevent monsters from level teleporting
to Moloch's Sanctum level unless the invocation ritual has already made it
accessible (same restriction player's character already has).  Otherwise a
monster could pick up one of the invocation items and effectively take it
into limbo, making it become impossible for the player to reach that level.
2003-08-12 06:54:39 +00:00
nethack.rankin 83199788f8 grammar bit: fix "the Eyes of the Overworld is ignoring you" 2003-08-12 06:37:42 +00:00
nethack.rankin 4908a3b6c8 plug #tip gaps (trunk only)
Add missing handling for trapped containers and for Schroedinger's Cat
to the #tip command.  Also, after tipping out the contents of a cursed bag
of holding, its weight would still reflect any items destroyed during the
process.
2003-07-28 10:10:09 +00:00
nethack.rankin 79a3c6d5a4 Schroedinger's cat
Releasing Schroedinger's Cat from a box which is being carried would
place the monster at the coordinates of wherever the box was last on the
floor instead of adjacent to the current location.

     Also, the message sequence

  The housecat inside the box is still alive!
  The large box is empty.

seemed a little strange.  This makes it say "is now empty" when a cat has
just been released.
2003-07-28 09:53:11 +00:00
nethack.rankin 28ae59a4fe looting fix (trunk only)
#tip shares able_to_loot() but doesn't require free hands.
2003-07-28 06:56:34 +00:00
nethack.rankin 5a88f420d5 comment tidbit
Fix a misspelling pointed out by <Someone> some time back.
2003-06-14 06:58:11 +00:00
nethack.rankin 974bab3a32 fix B03007 - monster gender handling + level follower tuning
Fix the reported problem of combat messages referring to Orcus as
"it" when the data.base entry uses "he"; extend use of gender-specific
pronouns to named and other unique monsters as well as to humanoids.
If any of those should stay as "it", they'll need to be M2_NEUTERed....

     And prevent level followers from chasing you across levels if they
are fleeing at the time.  It's an old change I've been sitting on which
is not related but happens to be right next to the pronoun code.
2003-06-02 08:05:41 +00:00
nethack.rankin bc2215268b random level teleport fix
From the newsgroup:  prevent monsters from level teleporting out of
the quest into the main dungeon.  The player can't do that and monsters
weren't supposed to be able to, but from time to time the quest nemesis
has seemingly vanished after reading a cursed scroll of teleportation.
His disappearance was due to ending up on a random level between the
quest entrance and the top of the dungeon.

     This also fixes an obscure bug that I noticed while trying to
reproduce that problem:  uncontrolled level teleports by the player in
the quest had 80% or thereabouts chance of ending up on the quest home
level.  All 12-15 main dungeon levels above quest entrance were included
in the random range of 1 thru current+3, then any choice which tried to
pick one of those was converted to quest level 1.  (Monster destination
wasn't getting that adjustment.)
2003-06-01 14:52:04 +00:00
nethack.rankin 678e05096d some lint cleanup
Mostly `gcc -Wwrite-strings' complaining about passing string
literals to safe_qbuf().  `gcc -Wformat' didn't catch the type mismatch
of formatting the return value of strlen() with %d, presumeably because
size_t is defined as unsigned int on this system and it treats int and
unsigned int as interchangeable as far as printf/scanf checking goes.

     I'm not sure whether the sizeof() values being passed to safe_qbuf()
ought to have casts.  Any system where size_t isn't the same width as
unsigned int is bound to support prototypes, but might possibly warn about
the implicit conversion of unsigned long (or even unsigned long long these
days) to unsigned int.
2003-05-31 07:14:21 +00:00
nethack.rankin ad243c0286 cmdassist bits
If the player gives the 'T' command while not wearing any armor,
don't suggest "use 'R' to remove accessories" unless the character is
actually wearing accessories.  Likewise for 'R' while not wearing any
accessories, don't suggest "use 'T' to take off armor" unless wearing
some.

     Add missing amulet case to the silly_thing() handling for 'W' and
'T'.  Also handle boots, gloves, and lenses as plural in the message
there.  silly_thing() has been simplified a little bit in the process.
2003-05-26 17:34:28 +00:00
nethack.rankin 9a39064b8f more perm_invent handling
Keep permanent inventory window up to date when using charged items.
Also a status line bit for the #tip command.
2003-05-24 04:07:14 +00:00
nethack.rankin 1b512c4a49 more "disclose" handling
Even though the in game help now lists the actual disclosure values
instead of "all" as the default value, implement support for "all" (also
for "none") since doing so is trivial.
2003-05-20 08:25:45 +00:00
nethack.rankin 459cee350e poisoning prefix
Fix a recent killer prefix fix....
2003-05-20 07:33:30 +00:00
nethack.rankin 29f3c6486e vms update
Bring a couple of vms-specific instances of nethack's version number
up to date.
2003-05-20 06:24:46 +00:00
nethack.rankin cf4c262178 vms playground setup
Create an empty paniclog file during playground creation, so that it
starts with the same permissions as other writeable files.  Without this,
it's liable to end up being owned by the first random user who triggers
a panic or impossibility rather than by the playground owner and probably
wouldn't be writable by any other user.
2003-05-20 06:04:04 +00:00
nethack.rankin b1a6120dce lev_comp parser update (U433) 2003-05-20 04:11:33 +00:00
nethack.rankin c4c1b064f7 fix B02004 and other projectile related killer reasons
1) killer reason for scattered land mine shrapnel used "a" or "an" prefix
   even when multiple projectiles hit as a group -- one of various things
   From a bug report.oextra field) --
   noticed while investigating #1 and later From a bug report.4.0 due to an unintentional side-effect of missile killer reason
   handling in 3.4.1 (removal of redundant "poisoned" prefix by m_throw()
   confused the poison handling routine) -- noticed while investigating #3.
2003-05-14 10:25:26 +00:00
nethack.rankin 33d3c2581e bones fix
From the newsgroup:  leash found inside a bones level shop was flagged
as "in use".  3.4.0 had a fix for that which works for most cases, but not
when the shopkeeper has taken the dead character's inventory just before
saving the bones file.

     This also adds an entry to the branch copy of fixes34.2 to synchronize
it with the trunk copy.
2003-05-08 07:23:11 +00:00
nethack.rankin 25d6335de9 two land mine bits
Noticed when investigating one of the killer reason bugs recently
reported:  a land mine explosion shouldn't create a concealed pit trap;
make a revealed pit instead.  And while testing that, I noticed that the
"Kaboom" message given when pushing a boulder onto a land mine was given
while the map still showed the boulder at its original location even
though it had actually been moved already.  It's a little odd that you
get hit by shrapnel at your original position--as if you're shoving the
boulder ahead of you and then pausing a moment before stepping into its
former location--but that's trickier to fix; sometimes you won't advance
due to there being multiple boulders present (in that case you evidently
do shove the boulder instead of performing a steady push, so maybe the
current behavior is fine as it is).
2003-05-03 02:08:34 +00:00
nethack.rankin 9672d39e13 fix U438 - text formatting
"List of game options" from `? f' misaligns the entries for runmode
and scroll_amount (at least for tty display).  Shorten their descriptions
so that they fit without squeezing out spaces.
2003-04-30 23:27:31 +00:00
nethack.rankin a16ba92a01 magic bag explosion
Make exploding bags of holding be less mysterious, and perhaps cut
done on the number of claims that they've vanished for no reason.  There
wasn't any feedback other than the explosion message itself; in particular,
the message about putting something into the bag didn't occur since that's
handled by the didn't-explode case.
2003-04-27 11:05:22 +00:00
nethack.rankin eabc4f4a4f comment typo 2003-04-27 10:38:00 +00:00
nethack.rankin de2c772a11 Castle trap doors fix
Recently discussed in the newsgroup, and it sounded familiar so may
have been reported directly earlier:

  You fly through the trap door.  You fly down along the stairs.

when polymorphed into a flying creature or riding a flying steed.  It
only happens at the castle, and only happens because the go-down code is
explicitly setting the arrival point to be the Valley stairs.  That's how
the castle trap doors used to work as traps too, but they were changed to
dump you randomly near the stairs quite some time ago.  Fix it by making
intentional triggering work the same now; this also prevents the false
feedback (even if you happen to arrive on the stairs by coincidence).
2003-04-27 10:32:55 +00:00
nethack.rankin d0e4d1e31b #tip command - container access
Another fix to address the complaints about two-handed weapons being
rendered useless by 3.4.1's change to require free hands in order to apply
containers.  Some players now fear to wield two-handed weapons because a
curse would make accessing their bag impossible, which is doubly nasty if
that's where they have scrolls of remove curse or potions of holy water
intended to deal with cursed items.  The same situation applies for cursed
one-handed weapon combined with cursed shield, so some are now claiming
that 3.4.1 has made two-weapon combat be even more attractive than before.

     This implements #tip, a new command that causes a container at the
current location or carried in inventory to have its contents emptied
onto the floor.  Hero's hands don't need to be free at the time but tipping
a floor container requires limbs; tipping an inventory container doesn't
need hands or even limbs.  The contained items don't pass through inventory
during the process, so don't cause objects (loadstones, crysknives, scrolls
of scare monster?) to go through their special handling unless it's part of
normally dropping to the floor.  Tipping a bag of tricks behaves the same
as applying it (one monster is released, and it only becomes empty if
that happened to be the last charge) and items tipped out of a cursed bag
of holding have their normal cursed bag chance (1/13) of being destroyed.
Tipping an inventory container while levitating or during unskilled riding
behaves similar to normal drop--from a height, so some fragile items break.

     Players have wanted this feature to get gray stones out of chests or
heavy corpses out of ice boxes but I didn't care much about that; losing
access to your bag is more significant.  I'm pretty sure that there was a
user patch to do something like this floating around at one time, but I
couldn't find it when I looked, so I implemented #tip totally from scratch.

     Bug?  Extended commands which lack meta-key shortcuts are not listed
in the help files displayed by the '?' command....
2003-04-03 10:56:46 +00:00
nethack.rankin dd2ff34d0c pickup bit
Lint removal necessitated by accidental omission of a band from the
earlier "container groundwork" patch.
2003-04-03 10:05:42 +00:00
nethack.rankin 9ee9c9f8b3 container groundwork
Move a couple of instances of container contents manipulation into
their own routines.  Behavior for items disappearing from cursed bags of
holding isn't quite identical but is effectively the same.  I think its
use of stolen_value (or simply the behavior of the latter) is buggy, but
I haven't tried to fix that.  (Cursed bag of holding destroying a player
owned bag containing shopped owned items definitely doesn't work well.)
2003-04-03 09:28:28 +00:00
nethack.rankin c8c7a463ff fix B02001 - WIZKIT artifacts
Fix the reported bug of artifacts created via wizard mode WIZKIT
being "forgotten" and possibly duplicated during play.  Perform artifact
initialization before $WIZKIT processing; role info needed by the former
is already sufficiently set up by that point.
2003-04-03 03:59:40 +00:00
nethack.rankin b3d8161353 magicbane message grammar
> "The magic-absorbing blade scares the erinys!  The erinys resist!
> The erinys are stunned.  You kill the erinys!"

     vtense() already has code to handle "erinys", but it didn't work as
intended when the caller uses "the erinys" for the subject string.
2003-03-31 08:02:30 +00:00
nethack.rankin 213bd793fd fix U382 - missing map display update
> Receiving Excalibur from a fountain while blind doesn't update the
> display (i.e. the missing fountain) immediately.

     Various other topology changes had the same problem.  The display
was only being updated if the hero was invisible on the assumption that
it wouldn't matter otherwise, but a blind character who moved off the
affected location would still have the old map info (fountain, trap, &c)
shown--until he walked back onto that spot or searched next to it or
regained sight--even though the player is told about the map change as
it happens.
2003-03-24 08:58:45 +00:00
nethack.rankin 9fa5cc7630 combat fixes
1) make two-weapon combat perform two attacks instead of always either
   hitting twice or missing twice;
2) address <Someone>'s report of weapon skill to-hit adjustment being ignored
   for bare-handed and martial arts attacks;
3) address newsgroup complaints about the intrusive "your armor is rather
   cumbersome" message given every time a monk wearing a suit attacks;
   this implements the suggestion that it only occur for those times where
   you miss because of the penalty involved, suppressing it when you miss
   due to other reasons and when you successfully hit;
4) bonus fix:  a side-effect of #3 is that the order of the messages "your
   armor is cumbersome" and Stormbringer's "bloodthirsty blade attacks" is
   inverted, making a sensible sequence instead of implying precognition.
2003-03-15 05:38:44 +00:00
nethack.rankin 6b1811007c new prayer trouble
3.4.1 included a change which requires you to be able to use hands
in order to manipulate containers; that makes sense but has introduced
an unintended side-effect.  It has become much harder to uncurse a
two-handed weapon or combination of a one-handed weapon and a shield
because you can't get scrolls or potions out of your bag.  This adds a
new major trouble for prayer to address that, escalating it above the
normal minor cursed item trouble.  It also removes a nonsensical check
for combination of two-handed weapon and shield that I added long ago.

     Not related, but same file:  add the missing artifact touch checks
for putting on accessories (quest amulets and lenses).  I can't remember
if this was From a bug report.
2003-03-10 23:49:04 +00:00
nethack.rankin 9327d35592 gameover
The recent bones panic included "program initialization failed"
during final rundown.  The cause of the panic has already been fixed;
this fixes the silly message that was delivered with it.

     Also, disclose the contents of carried statues along with normal
containers when the game ends.
2003-03-10 23:43:28 +00:00
nethack.rankin 7350d4fc98 tune notes hint
Add <Someone>'s suggestion for the expected input value to the prompt for
playing a tune, and implement handling for alternate note "H" which seems
to be used as a variation of "B" by some Europeans.  The Amiga part is
untested but "can't be wrong"(tm).
2003-03-10 23:36:01 +00:00
nethack.rankin 7aeaeac8e3 fix B20003 - hallucination and warning
> Why does warning work normally while hallucinating?  I'd like to see
> random numbers.

     It's just a one-liner, although it has pointed out problems in the
symbol lookup code.  "0" won't work at present, so this doesn't use it,
but warning symbols "1" through "5" also have trouble--regardless of
hallucination--if someone overloads them to represent any feature aside
from warning.
2003-02-20 00:19:49 +00:00
nethack.rankin 4107ce55af confuse monster bit
'+' is not a valid argument to resist(), although it still works
since the default case catches it.  Make the spell class explicit,
although I don't think having the effectiveness of scrolls of confuse
monster depend on the character's level makes much sense.
2003-02-19 12:26:03 +00:00
nethack.rankin 8d6d715f8d teleporting monster strategy
Reported last spring and again last week:  monsters who teleport to
your location (named demons, master liches, and so forth) continue to do
that even if they've just used a scroll or wand of teleportation to get
away from you.  This doesn't prevent that situation but does make it be
much less likely to occur.
2003-02-19 09:55:17 +00:00
nethack.rankin 7a1fcd008a wizkit revisited
The previous changed ended up discarding the begining portion of
excessively long lines and keeping the end.  It's unlikely that either
part is going to be valid, but reporting the ending portion as a failed
wish would make tracking down and fixing the situation trickier.
2003-02-19 08:35:51 +00:00
nethack.rankin 4496ca3d85 fix B18012 - Werebane
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.
2003-02-14 01:06:08 +00:00
nethack.rankin a20dc69dee fix U206 - cursed leash/pacifist conduct
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.
2003-02-13 23:32:48 +00:00
nethack.rankin 5f2e950857 vms Makefile 2003-02-13 23:30:38 +00:00
nethack.rankin fe05bcf52d falling into water while asleep
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.
2003-02-11 11:57:14 +00:00
nethack.rankin 731f4945ff vms update 2003-02-11 10:45:42 +00:00
nethack.rankin 97cd4c2ef7 magicbane tweaks
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).
2003-02-11 10:10:17 +00:00
nethack.rankin 6c1d28753c magicbane fixes
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.
2003-02-10 11:08:29 +00:00
nethack.rankin 00d320c3d3 magicbane groundwork
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.
2003-02-10 10:23:01 +00:00
nethack.rankin 02d9ab252d fix B18007 - travel cmd forces extra keystroke
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.
2003-02-07 10:04:27 +00:00
nethack.rankin 02d784f039 fix U242 - bug with monks
Monks get a big penalty to hit when wearing a suit; otherwise they
get a bonus when not wielding a weapon.  But as reported, that lets them
have their martial arts bonus even while wearing a shield which does seem
rather unexpected.  This change makes them only get their to-hit bonus
while shieldless as well as weaponless.  Impact on play balance is likely
to be quite small; late game characters hardly ever miss due to high luck
bonus and very early game ones won't have found a shield yet.

     Shouldn't the "your armor is cumbersome" message be ``if (verbose)''?
2003-01-31 06:41:56 +00:00
nethack.rankin 029ca9f294 fix "Scorpius egg"
From the newsgroup:  wishing for a "Scorpius egg" succeeds;
fortunately the resulting egg will never hatch.  Turn such eggs into
normal scorpion eggs instead.
2003-01-30 11:35:03 +00:00
nethack.rankin 1114722335 fix B18002 and B18003 - #rub worn blindfold and wield_tool() feedback
Prevent #rub from wielding an item that is already being worn
(which should narrow things down to the various types of eyewear;
other tools and weapons that go through wield_tool() can't be worn).
Fix up the wield_tool message spacing in the process.

     This moves wield_tool() from apply.c to wield.c.  Some plural
handling for messages is included; it is feasible to try to #rub a
"pair of lenses" or a stack of N candles.
2003-01-30 11:31:12 +00:00
nethack.rankin 6bb53178eb fix B17006 - stacked boomerang handling
Breaking a boomerang while bashing with it didn't work right when
there was a stack of more than one involved.  The message given had a
grammar buglet and the remaining boomerangs became unwielded.  (This
issue wasn't present in 3.4.0 because the boomerang bashing code never
got called there.)
2003-01-25 07:33:06 +00:00
nethack.rankin b9f9a6415b fix B17005 - autoquiver bug
hold_another_object() will try to quiver the object being held if
it's a weapon (or gem/rock ammo) and the autoquiver option is enabled and
the quiver is empty.  It was doing that even if the object had just merged
with primary or secondary weapon, resulting in it being equipped in two
slots at once.  (Easiest way to reproduce it is via wish+wield+wish for
similar item, but it could also occur when stealing while in nymph form.)

     This also addresses one of the old items on <Someone>'s list:  if you
carry a sling equipped in the alternate weapon slot, include gems and
rocks as likely candidates for quivering same as when wielding a sling.
This extends that to autoquivering; ammo appropriate for your alternate
is now given preference over arbitrary weapons (ammo for your wielded
weapon and arbitrary missiles still take precedence over alternate ammo).

     Bug?  pickup_object() is not autoquiver aware, hence autopickup isn't
either.

     Bug too (perhaps moot if the above is changed)?  Snagging a monster's
weapon with a bullwhip uses hold_another_object() so possibly autoquivers;
snagging an object off the floor with a grappling hook uses pickup_object()
so doesn't.
2003-01-25 04:46:11 +00:00
nethack.rankin b8e6276a17 forgotten spell tuning
Attempting to cast a forgotten spell might cause stunning instead
of or in addition to causing confusion.
2003-01-18 03:11:13 +00:00
nethack.rankin e9c25be839 fix B17001 - Still no "the guard disappears" message
A change I made last August broke this; it was checking whether you
could see the guard after having removed him from the map.
2003-01-15 21:25:02 +00:00