Commit Graph

1618 Commits

Author SHA1 Message Date
Pasi Kallinen
b7537e0fbf Add new parameters to makedefs: --debug and --make
"makedefs --debug --make q" is equivalent to "makedefs -q" with
DEBUG defined.
2015-02-27 19:34:34 -05:00
keni
b598c83767 Update .gitignore files. 2015-02-26 16:35:55 -05:00
keni
03140969ee Bulk recovery of file CVS headers and addition of NHDT- headers. 2015-02-26 09:19:03 -05:00
keni
9480f880c4 Add .gitattribute files. 2015-02-26 08:54:12 -05:00
Pasi Kallinen
ce0665cd15 Add a missing break
Stepping on a magic trap while riding could delete the trap and
make the deleted trap hit the steed.
2015-02-20 20:26:46 +02:00
Sean Hunt
0d9ae1d293 Add fixes notes for the recent lava changes. 2015-02-20 12:59:45 -05:00
nethack.rankin
e8e291b018 fix #H3039 - panic() when trying to drop destroyed items
From a bug report, dropping a lit
(burning) potion of oil while levitating can produce an explosion which can
destroy inventory.  If in the process of dropping multiple items, the ones
after the oil might be gone, resulting in use of stale pointers and possibly
triggering an "extract_nobj: object lost" panic or even a crash.  While
testing my fix, I discovered that being killed by an exploding potion of oil
could produce an "object_is_local" panic if bones are saved  (and reproduced
with unmodified 3.4.3).
2013-11-05 00:57:56 +00:00
nethack.rankin
d7a467fff1 fix #H3033 - Crash upon teleport onto a sink while equipping levitation boots
From a bug report, being teleported onto
a sink while busy putting on levitation boots triggered a crash when
Boots_on() was called (as '(*aftermv)()' on the next turn) because
'uarmf' would be null by then.  Not mentioned, but the same problem was
encountered by Boots_off() if the teleport happened while you were busy
taking boots off.  It could be fixed by having having dosinkfall() call
cancel_don() if donning(uarmf) yields true, but this patch does a little
more than that:  cancel donning/doffing of any multi-turn armor if you
fall onto a sink.  It also prevents you from falling if you end up
flying (which will have been blocked while levitating).

     The situation when putting on levitation boots has a sequencing
issue:  setworn() causes you to be flagged as levitating immediately,
but the float_up() feedback doesn't occur until Boots_on() gets called
a turn later.  Teleporting to the sink will tell you that you crash
onto the sink and and that you stop putting on boots, without having
been told that you've floated up into the air.  It's suboptimal but it
doesn't seem to actually be incorrect.
2013-10-26 21:33:47 +00:00
nethack.rankin
fec8981102 poly'd hero hiding feedback
When hiding as a monster, say so during the #monster command and
also list being hidden in the status section of enlightenment/^X.

     Also, prevent hiding on the floor or ceiling on the planes of air
and water.  (Didn't apply to monsters, who only hide on ROOM spots.)

     Half the change to dohide() is just revised indentation.
2013-03-16 01:44:28 +00:00
nethack.rankin
0a86304023 flying into pits
In the newsgroup recently, someone mentioned that when polymorphed into
a flying monster, he couldn't retrieve items out of pits, even with the '>'
command.  I thought that we had fixed that, but the fix apparently only
covered walk-through-wall creatures (xorns and earth elementals), not flyers
and ceiling clingers.  Now those can also deliberately enter pits via '>'.

     The fixes entry is in the new features section in order to be next to
the xorn one.  '>' at pit locations is new, but it handles something which
was missing so feels more like a bug fix than a new feature to me....
[Keni, the bug page entry C343-12 about '>' (for xorns?) is general enough
to cover this fix, so we don't need to add a new one for flyers.]
I noticed an unrelated fixes35.0 entry mentioning '>' which was duplicated;
this removes one of the copies.
2013-03-14 01:58:21 +00:00
nethack.rankin
1183aa6805 impossible fix - potentially invalid feedback
From a bug report, the message displayed to the screen by
impossible() might be different from the one written into paniclog, if it
had argument subsitution/formatting.  I couldn't reproduce that myself,
but stdarg.h/varargs.h is tricky stuff and I think that passing the va_list
to a routine which steps through it requires that va_start be called again
if you're going to use the va_list a second time.  This changes impossible()
to handle its arguments only once, like panic().
2013-02-09 01:33:37 +00:00
nethack.rankin
aebb5949f7 fix #H2785 - engraving punctuation
Message tidbit when engraving with a weapon which becomes too dull to
finish the whole text:  add missing final period to
  You are only able to write "<partial text>".
I think that proper usage puts the period in front of the quote rather than
after, but that could make it look as if the period ended up inside the
partial engraving.
2012-12-19 01:26:54 +00:00
nethack.rankin
d356779195 fix #H2671 - feedback when entering untended shop while blind
From a bug report, you get the message "this shop
appears to be deserted" when entering a shop whose shopkeeper is not there,
even if you can't see at the time.  Change it to be
 'this shop is deserted'
     when you can see that the shop is empty,
 'this shop is untended'
     when there's no shopkeeper but you can see some other monster(s) inside,
 'this shop seems to be deserted'
     when you can see but there is a monster that you can't see (probably a
     hidden mimic, but possibly an invisible monster or one standing behind
     a boulder that's ended up in the shop), or
 'this shop seems to be untended'
     when you can't see (and don't have active telepathy or persistent
     monster detection).
2012-07-03 22:54:49 +00:00
nethack.rankin
98a609a03b wand of polymorph vs monster inventory
From the newsgroup:  inventory dropped by a monster killed by system
shock when zapped by a wand of polymorph is protected against being poly'd
by that same zap, but worn/wielded equipment that's forced to be dropped
due to being unusable in a transformed monster's new form was not.  Not
mentioned in the newsgroup, but also fixed:  boulders dropped when a giant
turns into a non-giant were also subject to the zap instead of protected.
2012-05-25 23:54:59 +00:00
nethack.rankin
b90d87ec3c addtional monster movement tweak
Introduce some variation in monster movement by adding and substracting
small random amounts to the fixed increment from the main monster table.  The
amount added is potentially bigger (average is +2) than the amount substracted
(average is +1), so monsters will tend to be slightly faster.  Probably not
noticeable except for super-slow monsters not being so glacially slow, since
net +1 is a bigger relative increase for such critters' low movement rates.
In practice, the noticeable effect will be that ordinary speed monsters will
occasionally get an extra move even if/when player keeps the hero unburdened.

     Possible extension (although I'm not planning to do it):  sort the
monster list by pending movement points, so that faster monsters move before
slower ones.  The random variation would become noticeable because groups of
same-speed monsters would alter their movement order depending upon who got
a bigger increment or smaller decrement on that turn.
2012-05-16 02:15:10 +00:00
nethack.rankin
8c4e324856 fix #H2588 - turn order alternation bug
From a bug report, when the hero has
precisely 24 movement points, fast monsters will move twice and then the
hero will move twice, instead of being interleaved.  The hero will get 24
additonal movement points approximately one turn out of three when wearing
speed boots (or when using spell of haste self or potion of speed) and can
also get 18 additional points twice in succession, with a net of 24 after
12 of them are used on the first turn.  But hero might not be starting at
zero at the time, so I'm not sure how often this is actually noticeable.

     He apparently got a report about this for <some variant> and had some
user-contributed instrumentation in place that made it easier to replicate.
This fix is the one he suggested.
2012-05-16 01:47:18 +00:00
nethack.rankin
18dfc82175 oracle tidbit
From the newsgroup, while rehashing our bug page entries someone
mentioned that buying a minor consultation from the oracle exercizes
wisdom twice.  First when getrumor() chooses one, then again when
outrumor(BY_ORACLE) delivers it.

     This also simplifies some #if GOLDOBJ conditional code.
2012-05-11 22:36:33 +00:00
nethack.rankin
0add521787 fix #H2645 - invulnerability during prayer is vulernable to stinking cloud
From a bug report, stinking cloud
harms hero even when u.uninvulnerable is set during successful prayer.
This makes the cloud harmless during prayer as he suggested.

     It also makes being inside a stinking cloud become a major trouble
that prayer can fix.  (With magical breathing such a cloud is harmless and
with poison resistance it is just a nuisance; it won't be considered to be
trouble in such cases.)  The fix is to clear away the cloud, or to teleport
the hero if he's inside multiple overlapping clouds or in one that is
marked as permanent (which I think isn't currently possible).
2012-05-07 01:44:38 +00:00
nethack.rankin
e2ff15fe09 fix [rest of] #H2554 - noise when declining to kick peaceful monst
Reported last December by <email deleted>, attempting to kick
a peaceful monster then declining to attack at the confirmation prompt
uses no time, as expected, but does wake up nearby monsters and scuff an
engraving at the hero's location.
2012-05-02 23:01:40 +00:00
nethack.rankin
0d6d24ed97 Guidebook tweaks
Use Keni's *roff formatting macros on a few more option lists, and turn
a couple of those into sentences with semi-colon separators and final period.
2012-05-02 00:38:30 +00:00
nethack.rankin
9f2ca00138 fix [part of] #H2554 - hunger when declining to attack peaceful monst
Reported last December by <email deleted>, attempting to move
into a peaceful monster's position and then declining to attack at the
confirmation prompt uses no time, as expected, but does burn nutrition
the same as if you carried out the attack.  A player could abuse that to
make room to eat an intrinisic-conferring corpse before it rots away.
This fixes that, and also makes attacking a monster via applying a polearm
and via kicking burn the same extra nutrition as ordinary attack.  I didn't
add it for attacking via throwing.

     He/she also reported that kicking at a peaceful monster and declining
to attack at the prompt wakes up nearby monsters even though no actual kick
ultimately takes place.  I can confirm that, but this does not fix it.
2012-05-01 02:22:33 +00:00
nethack.rankin
889e3fa0b6 magic whistle vs steed
From a bug report, using a magic whistle when
you're mounted and standing on a trap location would cause your steed to
trigger the trap even though it didn't move.  Since it is already at the
same place as you, make steed be unaffected by magic whistle so that trap
complications can be avoided.
2012-04-30 22:00:25 +00:00
nethack.rankin
ebf42e6746 fix #H2642 - escaping from drowning by moving diagonally
From a bug report, you could crawl
out of water to avoid drowning by moving diagonally into an intact doorway
even though regular movement won't allow that.  (Second version of Medusa's
level has a door adjacent to water.)  You could also escape diagonally when
polymorphed into a grid bug.
2012-04-30 21:25:05 +00:00
keni
2dc1a2e21e new CC macro for accurately centering a single character column key 2012-04-30 01:11:00 +00:00
keni
371eb4483c Align the hyphens in .PL. 2012-04-22 14:55:41 +00:00
keni
a187ad7011 Another try on the .PL macro. 2012-04-21 03:01:03 +00:00
keni
6f1df20db8 Fix PL macro indentation when the entry spans a page break. (Note to anyone
who thinks these should be upgraded to keep an entry on a single page: look
at the footnote code in the original nroff docs, the tmac.n display code,
and then use ev 2 anyway - as long as there are no footnotes on a page with
PL, you might get away with it.)
2012-04-16 15:09:55 +00:00
nethack.rankin
dc76b94185 fixes tweak
Make it clear that this entry is describing the fix rather than the
bug being fixed.
2012-04-16 02:15:08 +00:00
nethack.rankin
084d2ab85d magic mapping fixes
^F on Plane of Water didn't show the magic portal to Astral.  I spent
a lot of time looking at differences between current code and 3.4.3 to figure
out what had changed, then finally tried it on 3.4.3 and discovered that it
didn't work back then either.  ^F marks all floor and ceiling traps as seen
and explicitly maps them, but Water has level.flags.hero_memory clear, making
the mapped trap disappear when it isn't in line of sight.

     When fixing this, I changed magic mapping so that it shows furniture
(stairs, altars, fountains, &c) in preference to traps or objects, and known
traps in preference to objects, so hidden things can be spotted.  (Once
they're in line of sight, the precedence reverses to normal, showing objects
on top of traps on top of floor.)
2012-04-16 02:05:40 +00:00
nethack.rankin
19945b31b0 fix #H2633 - turning to stone or slime while limbless
Michael's fix got here first, but didn't catch the green slime case.
2012-04-16 00:57:37 +00:00
nethack.allison
c44343d63c floating eye gaze reflecting message
On 12/04/2012 12:44 PM, <Someone> wrote:
> The message displayed was: "The floating eye's gaze is reflected by your
> armor". Although I realize that my silver dragon scale mail is embedded in
> my skin (as per my inventory), I still think that it's now my skin that
> reflects the gaze, not my (temporarily non-existent) armor.
2012-04-12 23:16:09 +00:00
nethack.allison
ac1575e747 no message 2012-04-10 23:05:08 +00:00
nethack.allison
dcab48fac5 Merge fixes34.4 into fixes35.0
This was done using the CVS log listings to preserve
the chronological order that patches were distributed,
rather than just cut and paste from one to the other.

This marks the abandonment of updates for fixes34.4.
2012-04-09 19:39:12 +00:00
nethack.rankin
6218a0eee2 overview disclosure (trunk only)
Add 'o' to "i a v g c" disclosure set, to display final dungeon
overview at end of game.  It lists all levels visited rather than just
those that #overview considers to be interesting, but it doesn't reveal
any undiscovered aspects of those levels except for the presence of bones.
(I think revealing shops and altars and such would be worthwhile, but the
data for that isn't handy at the time.)  If the game ends due to death,
the bones section of the current level will have "you, <reason you died>"
(before any real bones entries for that level).  That occurs before bones
file creation so it doesn't give away whether bones are being saved.

     end.c includes some unrelated lint cleanup.

     Guidebook.{mn,tex} updates the section for autopickup_exceptions as
well as for disclose.  It had some odd looking indentation due to various
explicit paragraph breaks.  I took "experimental" out of its description
since it was moved out of the experimental section of config.h long ago.
The revised Guidebook.tex is untested.
2012-04-09 02:56:37 +00:00
nethack.rankin
921c056efc fix more of #2629 - striking/force bolt feedback (trunk only)
From a bug report, the message "Boing!" is given if wand of striking
or spell of force bolt is aimed at magic resistant hero by self or by
monster, or at magic resistant monster by another monster, but it was
omitted when aimed at magic resistant monster by the hero.  The shield
effect animation for resistance is given in all the cases.
2012-04-07 01:17:23 +00:00
nethack.rankin
e46e3668b3 fix another part of #2629 - destory_mitem of partial stack (trunk only)
From a bug report, if part of a stack in a monster's inventory gets
destroyed (examples given were from Fire Brand burning scrolls or Frost
Brand freezing potions, but other code calls destroy_mitem() too), the
message handled singular vs plural for the desruction part ("catches
fire and burns" vs "catch fire and burn") but always used plural when
formatting the object stack being affected.  Now say "One of <the mon's
foo>" or "Some of <the mon's foo>" as appropriate when part of a stack
is being destroyed.  (destroy_item() for the hero paid more attention
and handled this issue correctly.)
2012-04-06 08:49:27 +00:00
nethack.rankin
b3e131e914 fix part of #2629 - feedback for reverse genocide (trunk only)
From a bug report, if reading a cursed scroll of genocide created only
one monster it would give the plural message "Sent in some <monsters>."
Now it will say "Sent in a(n) <monster>." in such case.  (The grammar is
accurate even if you can't see what happened; that situation is unusual
enough that I'm not going to worry about giving information away.)
2012-04-06 08:35:00 +00:00
nethack.rankin
6a9217d568 nerf potion alchemy (trunk only)
Something I've had in mind for a long time:  make it harder to acquire
dozens of potions of full healing and thereby (8 * dozens) of extra hit
points.  When dipping a stack of more than 2 potions into another potion
other than water, first split the stack so that 2 to 9 potions are dipped
rather than all of them.  Alchemy still works but it will take more dips
(hence need more resources) to convert large amounts.  Dipping into water
isn't affected, nor is dipping non-potions.

     Also fix a bug where dipping a stack--now perhaps a subset stack after
splitting--which triggered an explosion was only using up one of the dipped
potions (plus the one being dipped into) instead of the whole stack.
2012-02-19 02:06:43 +00:00
nethack.rankin
6ac27851a6 fix #H2591 - sitting while swallowed (trunk only)
From a bug report, sitting while
swallowed gave "you are sitting on air," and the intended message "there are
no seats in here" was never reached.  Move the latter so that it works, and
add a new one when you try to sit while a grabber is holding on to you.

     Also add theft vs donning fixes entry which was left out two days ago.
2012-02-06 04:17:25 +00:00
nethack.rankin
7dd8600e17 wizard bones bug (trunk only)
The wizard mode sequence
  load bones? y, unlink bones? y, die, save bones? y
works, but
  load bones? y, unlink bones? n, die, save bones? y, replace old bones? y
fails if/when external compression is in use.  The file gets uncompressed
before being opened to check its existence, then immediately closed, and
re-compressed, changing the file's name, before the deletion attempt takes
place.  Then delete_bonesfile() can't find it via the uncompressed name
and the bones saving code reports "cannot unlink old bones".

     The code involved doesn't seem to have changed since the current cvs
repository was set up, so this bug has gone unnoticed for a long time.
There's no reason this fix shouldn't go into the branch too, other than the
fact that I don't have that checked out on this machine.  If someone wants
to apply it there, be my guest (and move the fixes entry to fixes34.4).
2012-01-28 02:52:14 +00:00
nethack.rankin
b88c51deae bones tracking (trunk only)
Quite a long time ago, the developer/administrator of the 'hearse'
bones respository asked to have bones files augmented so that they could
be correlated with logfile entries.  He was forced to approximate it by
comparing file date+time with logfile date, which won't work well if there
are multiple deaths at roughly the same time, or perhaps even on the same
day.  This adds character name plus role, race, gender, alignment, the
cause of death, and date plus time of death to the bones file when it is
saved, and reads that data in when a bones file is loaded, then retains
it as part of that level for the remainder of the game.  Dying on a level
that was loaded from bones will chain the new dead hero info to whatever
was there from the previous one(s).  It's written as fixed length strings
padded with spaces before writing the map and its messy details, making
it easy to spot with a simple file browsing tool rather than requiring
something which can interpret nethack level files.  This may need to be
tweaked if players start shelling out of nethack to see whether the
checkpoint file for a newly entered level contains bones info, but at the
moment I'm not going to worry about that.

     TODO:  I wanted the bones and topten date to match, so am obtaining
the current date+time in done() and passing it to both of those and also
to outrip().  Hence the latter now has an additional argument.  So far only
genl_outrip() and hup_outrip() in src and the three outrips in win/chain
have been taught about that; interfaces that supply their own outrip()
need to be updated and probably won't compile right now.  Also, code for
formatting the cause of death has been moved from topten() into a separate
routine so that the new bones code can share it.  genl_outrip() now calls
it too; the various other outrip() routines should be changed to call it
instead of continuing to duplicate that core code.  (I probably should
have made topten.c's killed_by_prefix[] be static in order to force that,
but haven't done so.)

     TODO too:  there ought to be some way of viewing the data for a loaded
bones file from within nethack.  I'll probably add something to the dungeon
overview code to treat it as an implicit annotation, as least in wizard mode.
Showing it in normal play once a level is sufficiently discovered would be
useful, but I'm not sure what criteria should control that.  Neither ghost
nor grave is guaranteed to be present, particularly for levels that were
saved as bones, loaded into a subsequent game, then became new bones when
the second hero died there, which can occur an arbitrary number of times.
2012-01-23 10:41:57 +00:00
nethack.rankin
c0743f478a dlb capacity (trunk only)
From the newsgroup:  if someone adds too many new special levels, dlb
creation during install will give a warning but still exit with success,
and the subsequent installation won't know that the excess files need to be
placed in the playground separately.  The result is that some files will
be missing when nethack tries to access them.  The newsgroup thread states
that slash'em increased dlb's default limit of 200 files to 300, and the
unnethack variant increased it to 250 and also changed the overflow message
into an error that causes 'make' to quit.  (The thread was initiated by
someone working on his own, not affiliated with either variant, who asked
for help figuring out why nethack couldn't find files at the end of the
alphabet.  My answer didn't help much; I thought he was working with
separate files rather than with a DLB container.)

     I started to go with the too-many-files-is-an-error fix, but instead
went the GNU route ("no arbitrary limits") and made the number of allowed
files become dynamic.  It starts at 200 and expands by increments of 40
when necessary.
2012-01-16 03:56:08 +00:00
keni
7f6ee2f759 WINCHAIN - a framework allowing multiple processors between core and winport
This is the code I built trying to figure out the large window size issue.
It completely compiles out if not needed (see -DWINCHAIN in hints/macos10.7)
and except for one call during setup has zero overhead if compiled in and
not used.  See window.doc for more info.

Defs for UNUSED parms.  I know this has been controversial, so use is isolated
to the chain code and windows.c (where it shouldn't be intrusive and saves about
50 warnings).

Hints file for 10.7, but the build process still needs to be migrated from
the branch.
2012-01-11 18:23:35 +00:00
nethack.rankin
369b1031fd fix #H2559+2564 - using 'a' command to discover potion of oil (trunk only)
From a bug report, if you used the apply command while
not carrying anything applicable except for unknown potion, you would get
"you don't have anything to apply" if that potion wasn't oil but an
inventory selection prompt (with '*' as the default since you wouldn't
have anything considered to be a likely candidate) if that potion was oil,
giving away information.

     This fix makes carrying any unknown potion yield the inventory
selection result, unless oil is already discovered and hero can see that
the unknown potion isn't oil.
2012-01-10 08:50:19 +00:00
keni
92b15c5f8a another shot at H2344 (large window)
Conditional on H2344_BROKEN which can be disabled at the top of the file if
necessary.  This appears to handle all the cases I was able to reproduce from
Pat's list, with the caveat that msg_window=f fails on very wide windows on
Mac OSX Lion with the default terminal emulation.  When the emulation is set
to ANSI, it works (the failure mode is the output from a simple putchar() loop
across the contents of history called up from ^P wraps at about the middle
of the window).
2012-01-10 02:33:36 +00:00
keni
c119e8c3d9 add param to ini winsys routines
Provide a mechanism for cleanly moving between tentative window system
selections during startup.  Now, before a second (or later) system is selected,
the first will be notified that it is losing control.  See window.doc.
2012-01-10 01:39:31 +00:00
nethack.rankin
1563a3e0ec drain life vs drain resisting objects (trunk only)
From the newsgroup:  casting spell of drain life at Stormbringer
(or Excalibur or Staff of Aesculapius) would reduce its enchantment just
like any other weapon.  Drain resistance should protect against that even
when not actively wielded.
2012-01-08 01:26:35 +00:00
arromdee
4856f00479 remove duplicate entry
Since this should just be in 34.4
2011-12-19 00:27:17 +00:00
arromdee
2cf8261159 Minor cockatrice fix
PS: Why do we have duplicate fixes__._ files in the branches, since by
definition the same file would have to stay the same in any branch?
2011-12-18 05:16:36 +00:00
arromdee
df317ceb43 Put fruit fix in fix list 2011-12-12 02:18:20 +00:00