nethack.allison [Tue, 1 Jun 2004 05:22:28 +0000 (05:22 +0000)]
enlightenment
Give more information about your attributes in debug mode
via Control-X.
I'd like to see some way of getting bits of this info to the
player during the game (from the Oracle or something),
but this patch keeps it limited to debug mode.
cohrs [Wed, 26 May 2004 15:49:49 +0000 (15:49 +0000)]
monsters using teleport traps
While trying in vain to find code that would cause the reported
priest-on-players-location behavior, I did find that the code to find
a usable teleport or similar trap was disallowing lots of locations due to
an && that should have been an ||.
cohrs [Tue, 25 May 2004 18:20:35 +0000 (18:20 +0000)]
U979 followup - mimic mimicking a boulder on Sokobon hole
The previous change only affected mimics that started mimicing after the
level was created. This change tries to perform a similar behavior for
randomly placed mimics that are forced to mimic a boulder on special levels.
In this case, since the symbol is fixed and the location is "random", try
several times to find a non-trap location for such a mimic.
cohrs [Mon, 24 May 2004 22:07:18 +0000 (22:07 +0000)]
U979 - mimic mimicking a boulder on Sokobon hole
On mazelike levels, mimics will mimic either boulders or statues (of giant
ants, as it turns out). However, it does not make sense to mimic a boulder
on a hole or even a pit, since boulders would typically fall in. Also,
statues are not typical objects in Sokoban. So, skip statue special case
in Sokoban and always avoid the forced emulation of a boulder when on a
trap location outside a room. This is a bit drastic, but I couldn't think of
an argument for adding the code to do this only for pits, holes, et al,
which are the most likely traps outside rooms anyway.
nethack.allison [Mon, 24 May 2004 14:21:15 +0000 (14:21 +0000)]
CE patch (from <Someone>)
Disable processing of double-click messages if the first click
causes map to scroll. The problem is that if the first click scrolls
the map the second click is going to scroll it even further
(before it is redrawn) which is very confusing for the user.
cohrs [Sat, 22 May 2004 18:23:59 +0000 (18:23 +0000)]
Wrong weight of corpses on special levels
Incorporate a fix from <Someone> related to slashem-Bugs-916544. The
weight was not recalcuated after changing the corpsenm.
nethack.rankin [Sat, 22 May 2004 03:24:23 +0000 (03:24 +0000)]
shapechanger hit points (trunk only)
Try to fix the report of a doppelganger (created from using stone-
to-flesh on a fake statue of Demogorgon) having 1700 hit points after
reverting to its native form. The problem was due to the special monster
level of Demogorgon rather than anything to do with shape changers; the
actual bug was use of `mdat->mlevel' where it should have been using
`mtmp->data->mlevel'. But the whole section of code was rather suspect
since it didn't attempt to handle other types of monsters (dragons, golems,
elementals) which have non-standard hit points, so I knocked some out.
Monsters who have gained or lost levels prior to changing form will no
longer carry that adjustment along; the new form will always be a brand
new one of its type. However, if the old form is injured at the time of
change, the new form will be too (same as before).
cohrs [Sat, 22 May 2004 01:10:01 +0000 (01:10 +0000)]
U1047 - mimics mimicking closed doors on the rogue level
Since the rogue level does not have closed doors, mimicking one there makes
no sense. Similar to what wand of locking does there, make mimics that end
up there mimic a wall instead of a door.
cohrs [Fri, 21 May 2004 21:33:19 +0000 (21:33 +0000)]
U1041 - monster hidden under a corpse not displayed immediately when it rots
There was already code to ensure that if a hidden monster moved, it would
no longer be hidden. However, if the monster is asleep or whatever under
a rotting corpse, when the corpse rotted away, the monster would not
immediately become detected. Add a check to the rot code before the newsym.
cohrs [Fri, 21 May 2004 21:20:16 +0000 (21:20 +0000)]
U917 - floating above unknown stairs
Attempting to go > while blind and floating over unknown stairs/ladder
would refer to the stairs in the "high above" message (however, the
stairs/ladder remained unidentified on the map). Change this case so
it only refers to stairs/ladder if that's what the hero remembers on the map.
nethack.allison [Sun, 9 May 2004 16:58:56 +0000 (16:58 +0000)]
U1039 passive() stoning check tweak
>If you hit a cockatrice with a weapon that immediately breaks
>(like a potion, mirror, or cockatrice egg) you get stoned,
Add a parameter to passive() to make it possible to pass
additional information that indicates that the weapon was
there at the start of the turn, but destroyed during the turn.
nethack.allison [Sun, 9 May 2004 16:53:16 +0000 (16:53 +0000)]
U1039 passive() stoning check tweak
>If you hit a cockatrice with a weapon that immediately breaks
>(like a potion, mirror, or cockatrice egg) you get stoned,
Add a parameter to passive() to make it possible to pass
additional information that indicates that the weapon was
there at the start of the turn, but destroyed during the turn.
nethack.rankin [Sat, 8 May 2004 03:36:37 +0000 (03:36 +0000)]
cursed destroy armor
Fix the bug From a bug report. Subsequently removing
the item caused those attributes to be returned to an incorrect value
which was higher than the character started out with.
giant carrying boulder dies while trapped in a pit (trunk only)
<Someone> wrote:
> "You kill the invisible storm giant. The boulder fills a pit."
> [...] why did I find the corpse *lying on* and not *buried in* the
> former pit?
Ensure that the corpse ends up buried in that case.
<Someone> wrote:
> You have much trouble removing u - a helmet.
> You have much trouble lifting a plate mail. Continue? [ynq] (q)
> You have much trouble removing R - a plate mail.
> You have much trouble removing N - a leather cloak.
> Why am I told that I have trouble "lifting" a plate mail?
1. Add strsubst() routine to hacklib to replace a word or phrase in a string in place.
2. Correct the inconsistency reported.
cohrs [Fri, 26 Mar 2004 19:26:37 +0000 (19:26 +0000)]
U897: kicking while in the air
If you kick something while in the air (i.e. on the Air level or while
in a bubble on the water level), 1) greased objects were treated specially
and 2) messages were given about the object sliding.
- add checks for kicking in the air, and always increased distance a bit
(I didn't add any checks to deal with the transition from air to water or
visa versa)
- don't set the flag that causes the "slides" message in these cases either
cohrs [Fri, 26 Mar 2004 18:28:28 +0000 (18:28 +0000)]
score wrapping band-aid
This patch simply keeps the score from wrapping by capping it at LONG_MAX.
If someone wants to change the score to be unsigned, some changes will
need to be made to tweak this code (and use ULONG_MAX instead).
I'm assuming that our platforms all have limits.h.
cohrs [Fri, 26 Mar 2004 18:20:49 +0000 (18:20 +0000)]
Juiblex' frozen "moat"
<Someone> reported that freezing the swamp on Juiblex' level would result
in message about a frozen moat. Avoid this by using waterbody_name
to to determine if it's a moat or not.
cohrs [Fri, 26 Mar 2004 17:23:15 +0000 (17:23 +0000)]
nethack man page updates
- as requested by ESR, remove the use of parentheses from the usage
summary, it confused some man page conversion tool he has
- updated documentation for the -p option to mention the word "role"
so anyone search for role in the man page will still find it
- removed use of .UC, it is listed as deprecated in all the current man
documentation I could find, when it was even documented at all
- other minor spelling and formatting (hyphenation) changes
arromdee [Fri, 12 Mar 2004 04:04:51 +0000 (04:04 +0000)]
blindfold (from r.g.r.n)
Someone suggested that if your vision is only blocked by a blindfold and it's
the blindfold that glows, you should be able to see it.
arromdee [Fri, 12 Mar 2004 03:57:20 +0000 (03:57 +0000)]
blindfold (from r.g.r.n)
Someone suggested that if your vision is only blocked by a blindfold and it's
the blindfold that glows, you should be able to see it.
cohrs [Wed, 28 Jan 2004 17:49:21 +0000 (17:49 +0000)]
dipping acid in a fountain
<Someone> reported that dipping acid in a fountain did not always destroy
the acid. It might be best to have get_wet call useup in this case, but
that would require more work.
cohrs [Tue, 27 Jan 2004 21:10:14 +0000 (21:10 +0000)]
fleeing mimics
Reported to the list back in November: scaring a mimicing mimic will
produce a "turns to flee" message, but the mimic does not unmimic nor
does it flee. The latter behavior made sense to me as a defense mechanism,
so I changed monflee to avoid printing the message in this case.
cohrs [Tue, 27 Jan 2004 19:35:09 +0000 (19:35 +0000)]
U846 - xorns and pits
Change pit behavior to always mark a non-flying poly'd player as trapped in
a pit, even when Passes_walls is set. This allows players polymorphed into
xorns to descend into pits and pick things up. In this case, any attempt
to move out of the pit now takes a turn but always succeeds. Also fixed
a related bug (w/o ID) that a player could become trapped as if in a pit
when leaving xorn form because u.utrap wasn't checked, and simplified the
code since the extra Passes_walls checks are no longer needed. Also
updated code in sit.c that duplicated uteetering_at_seen_pit.
cohrs [Tue, 27 Jan 2004 17:28:00 +0000 (17:28 +0000)]
Invisible monsters looking much better
<Someone> reported back in December of an invisible monster using an amulet of
lifesaving and looking much better. While the comment in the code says the
amulet is visible, this does not mean the monster is. Add a secondary check.
cohrs [Tue, 27 Jan 2004 03:37:51 +0000 (03:37 +0000)]
U880 - grammar when eating artifacts
Both the reported tombstone message and the initial message could be
grammatically incorrect for eating identified artifacts. This begs the
question whether artifacts should be so easy to destroy.
cohrs [Tue, 27 Jan 2004 00:23:31 +0000 (00:23 +0000)]
general musical instrument use while polymorphed
Extend the previous patch to cover all blown instruments. Also covers
the case of the player strangling. The test is moved to a new can_blow
function to keep the test in one place. It supports any monster, although
all current tests are for the player.
cohrs [Mon, 26 Jan 2004 23:19:36 +0000 (23:19 +0000)]
whistle use while polymorphed
Restrict poly'd whistle use to monsters that can blow a whistle. The
restriction includes those that make no sound (or just buzz, which is a
wing-thing) and are either breathless, tiny (eg ants), headless or water
natives. Searching monst.c, this appeared to provide a reasonable set of
restrictions. There are a couple cases one might quibble about if someone
feels like refining this further.
cohrs [Thu, 22 Jan 2004 23:25:15 +0000 (23:25 +0000)]
using a whistle underwater
A long time ago, a message to the list suggested that whistles should not
work underwater. I did some google research and this does appear to be
true for most whistles. However, magic whistles are magical, so I left
them alone (also, I did find one high-tech whistle in my research that
claimed to work underwater). Since being underwater affects pitch,
adjusted the magic whistle message slightly for that case.
nethack.allison [Sat, 17 Jan 2004 20:42:14 +0000 (20:42 +0000)]
avoid "It turns into it"
<Someone> drew attention to the silly message in the newsgroup
Since I'm not sure if the act of polymorphing has a sound,
I opted to use a new usmellmon() routine to put out a
message based on the smell of the resulting monster
under those circumstances.
Not every monster has a recognizable smell, so no
message at all is given in that case.
olfactory(youmonst.data) will determine whether
you are capable of detecting smells.
There is lots of room for enhancement, and some of the
existing smell-related messages in the source should perhaps
be checking olfactory(youmonst.data) too, but this patch
doesn't go that far.
nethack.rankin [Sat, 10 Jan 2004 03:23:55 +0000 (03:23 +0000)]
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.
nethack.rankin [Sat, 27 Dec 2003 02:45:47 +0000 (02:45 +0000)]
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.]
nethack.rankin [Thu, 18 Dec 2003 05:00:47 +0000 (05:00 +0000)]
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.
nethack.allison [Tue, 16 Dec 2003 02:58:55 +0000 (02:58 +0000)]
Re: #U800: possible bug regarding pits
<email deleted> wrote:
> Not sure what exactly should occur, but this seems funny: If
> you escape a pit and there is an object in the pit, you can
> not reach it to pick it up. Nor can you go down into the pit
> to get it, but sitting gives the message "you sit on the
> (object) it's not very comfortable. How can the character sit
> on it if it's in the bottom of the pit?
nethack.rankin [Sat, 13 Dec 2003 14:51:38 +0000 (14:51 +0000)]
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.
cohrs [Sun, 7 Dec 2003 20:20:59 +0000 (20:20 +0000)]
OS2 bits
Ronald Van Iwaarden wrote:
... lines 1845 and 1846 of cmd.c generate a 'value out of range
warning' due to the compiler making 0x80 an integer rather than a character
and '|'ing it with the argument. This requires a minor change to micro.h.
[ Makefile.os2 rev does not currently make sense in the trunk. ]
cohrs [Sun, 7 Dec 2003 18:07:28 +0000 (18:07 +0000)]
Files update, part 2
While looking thru the whole list, I found a few sorting mistakes which
confused my inspection and one misspelling. I didn't inspect the derived
file list.
nethack.allison [Sun, 7 Dec 2003 01:33:25 +0000 (01:33 +0000)]
wince build fix (from <Someone>)
[this is not meant to trigger re-packaging for 3.4.3]
Windows CE defines leave as part of exception handling (__leave)
It confilicts with existing sources and since we don't use exceptions
it is safe to undefine it
nethack.rankin [Sat, 6 Dec 2003 14:08:51 +0000 (14:08 +0000)]
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.
nethack.rankin [Fri, 5 Dec 2003 11:37:37 +0000 (11:37 +0000)]
#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.
nethack.rankin [Fri, 5 Dec 2003 08:54:32 +0000 (08:54 +0000)]
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.
nethack.rankin [Wed, 3 Dec 2003 07:10:24 +0000 (07:10 +0000)]
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.
nethack.allison [Tue, 2 Dec 2003 05:00:02 +0000 (05:00 +0000)]
B02005 and B02006
B02006 autopickup_exception documentation
>Should the documentation say what priority order is used if two conflict?
>(For example, how ">*orcish" and "<*arrow" handle an orcish arrow; from
>experimentation, > always takes precedent over < , but I could be
>missing something.)
B02005 autopickup_exception option menu
> It'd be nice if you were returned to the menu after adding an exception
> via O so that you can set several with one command.
nethack.rankin [Sun, 30 Nov 2003 21:19:01 +0000 (21:19 +0000)]
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.
nethack.rankin [Sun, 30 Nov 2003 11:04:54 +0000 (11:04 +0000)]
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.)
nethack.allison [Sun, 30 Nov 2003 05:51:53 +0000 (05:51 +0000)]
core support for status field highlighting (trunk only)
This provides the core support needed for status field highlighting.
This patch doesn't actually perform status field highlighting for any port,
but provides the core hooks for doing so.
The syntax is:
OPTIONS=hilite_status:{fieldname}/{threshold}/{below}/{above}
where {fieldname} is the name of a status field.
{threshold} is the value used as the threshold to trigger a display
change. It can also be set to "updown" to trigger
a display change whenever it rises or whenever it falls.
If you end the threshold value with %, then it signifies
that you want to trigger the display change based on the
percentage of maximum.
{below}, {above}
are the color or display attribute that you want to use when
the field value is underneath the threshold. Supported display
fields are: normal, inverse, bold, black, red, green,
brown, blue, magenta, cyan, gray, orange,
bright-green, yellow, bright-blue, bright-magenta,
bright-cyan, or white.
Valid field names are:
alignment, armor-class, carrying-capacity,
charisma, condition, constitution, dexterity,
dungeon-level, experience-level, experience,
gold, HD, hitpoints-max, hitpoints, hunger,
intelligence, power-max, power, score,
strength, time, title, wisdom
Refer to window.doc for details. Guidebook updates to come later.
nethack.allison [Sat, 29 Nov 2003 18:48:13 +0000 (18:48 +0000)]
egg hatching message bug
> From the newsgroup: an egg carried by the hero hatched and the
> resulting monster was placed in hiding underneath an adjacent object.
> The silly hatching message given was "You see it drop from your pack."
> (Player said he was using 3.4.1, but the relevant code hasn't changed
> since then.)
cohrs [Thu, 27 Nov 2003 17:37:38 +0000 (17:37 +0000)]
B02002 - drawbridge vs longworm
If a long worm's head is on the drawbridge and a tail segment is at the
portcullis and you raise the drawbridge, bad monster handling occurs
because of some recursion that occurs before set_entity is called again.
Not sure when this last worked; it's broken in 3.4.2 as well. Modified
e_died to ensure both entity objects for the same monster get cleaned up
so subsequent e_at calls behave as expected.
cohrs [Thu, 27 Nov 2003 07:03:56 +0000 (07:03 +0000)]
U761 - Sitting as a hider and other related is_hider behavior
While looking at the behavior of sitting hiders, I noticed other related
odd behavior.
- player hiding while poly'd as a hider that hangs on the ceiling now drops to
the floor before sitting (similar to the behavior of movement commands).
- trappers, as per data.base, don't hang on the ceiling. Changed the
mattacku case dealing with hiders to not treat trappers as ceiling hiders.
- updated can_reach_floor to also exclude ceiling hiders. This covers a
bunch of cases, such as pickup, look-here-while-blind, and so on. Another
alternative would have been to automatically unhide for all such cases.
trunk only, it's a minor bug IMO and we appear to be close to a release.
nethack.rankin [Thu, 27 Nov 2003 05:00:29 +0000 (05:00 +0000)]
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.