Eliminate or at least reduce one of the idiosyncratic differences
between enchant weapon and enchant armor: make reading enchant weapon
discover that scroll if the effect is adequately discernible, instead
of always asking the player to supply a name for it. If your weapon
is identified and its +/- enchantment value goes up, or you're wielding
a worm tooth and it transforms into a crysknife, you learn the scroll.
However for the negative effect of a cursed one, that's only applicable
when the scroll is already known to be cursed.
Refinement of the digging code:
* Picks should not chop down trees, but axes should.
* Picks should break walls, rock, statues, and boulders; axes shouldn't.
* Either picks or axes should chop down doors.
- <Someone> reported that the swallowed display did not update immediately if
you managed to polymorph the monster that was engulfing you into another
engulfing monster
- Don't guarantee high results when you have high Luck, add Luck into
random param of rn1(), and just add 1 to the basis, keeping the guaranteed
fix of a single major trouble mentioned in the block comment
[ Fix a bug reported in the newsgroup; I thought I sent this last
week, but it isn't in the current code so I must have forgotten. ]
When I split u_left_shop() into two routines I neglected to
propagate the early return condition from the second half to the
first. The result is that if you leave a shop with unpaid goods
but have enough credit there to cover the cost, the shopkeeper
will take that credit and be satisified, but the kops were still
getting summoned as if he had been robbed.
- From a bug report, there are ways to, for example, steal items
from Medusa without waking her, by clever use of Conflict.
Avoid this by removing STRAT_WAITFORU when such an attack succeeds
- it was theoretically possible to use a similar approach to steal from a
STRAT_WAITFORU monster without it noticing while polymorphed and very fast,
so bulletproof this case as well. Simpler because failed attacks wake too.
- when a shopkeeper leaves the shop to chase the player, and the player
enters the shop, bill_p is set to an unusual value. bill_p needs to be set
back to a valid value if the shopkeeper re-enters the shop.
- Also, the u.ushops state needs to be updated when a shop becomes tended
again if the player is in the shop.
- introduce a new after_shk_move function to handle this
- typing ESC would lose messages if msg_window was not displayed
- incorporate <Someone>'s fix, which causes them to be tracked, just not
displayed, and thus still available for ^P viewing later on
A suggestion from <Someone>
- since newsym marks physical traps that have a monster trapped as seen,
and the ^ command will tell you what it is, lookat() can tell you about the
trap too
Get rid of the obsolete comments about summon spells also aggravating.
The effect on balance of not aggravating is negligible, because nasty() already
wakes up most of the monsters it creates.
Addresses reports R718, R772.1, <Someone> P's extra move bug
- when there is a previously seen path or a straight path, always take it
- incorporate fix to ensure no extra "." turn at the end of traveling, but
still avoid stepping into traps/pools, et al
- include a general "G"-command (and travel) fix to avoid stepping in
known pools/lava while blind
- when there is no such path, "guess" at a path by finding an intermediate
location that the hero couldsee that is closest to the actual goal, the
intermediate goal is re-determined at each step
- when Blind, don't use couldsee for determining straight paths, just direction
- do not consider doors or most boulders obstacles for picking travel
paths, test_move has a new mode to differentiate this case from the regular
test case
- don't include known trap locations in the travel path, avoids unnecessary
stops along the way, and usually doesn't affect the path length
- reformatted the code a bit so I could follow it
When the Wizard uses STRAT_MONSTR to get next to any monster
which is carrying the Amulet, he was actually displacing the other
monster to take its map location. It was possible--and still is,
actually, although it takes a lot longer now--for the excessive
summoning by spell casting monsters to entirely fill up the temple
on the Sanctum level, so the Wizard would sometimes knock Moloch's
high priest right out of his temple. And since that priest doesn't
turn hostile until you enter the temple, you might have needed to
kill a peaceful human in order to get the Amulet.
Now when there's no elbow room in the temple, the Wizard will
stay outside instead of bumping the high priest out.
Alter the starting position of the monk and priest quest
nemeses to neutralize the possibility of attacking them by
zapping directly to the left as soon as you arrive on the final
level. And give the samurai a little variety too by varying
the arrival location, although that is just cosmetic.
From: "Ken Arromdee" :
> My point is that you should be allowed to take vengeance on thieving
> nymphs too. The reasoning "a real knight wouldn't kill a nymph for stealing"
> doesn't make sense because the things a real knight would do instead (like
> arresting) aren't part of the game.
This is a compromise. This doesn't allow vengeance when you were
told "you gladly hand over ...", but does for most other cases, and for
leprechauns.
Can't push boulders through iron bars; traps can't roll such through either;
likewise for objects thrown by monsters.
Thrown objects susceptible to breaking might do so when they hit iron bars.
Assorted monsters can pass through iron bars; ditto for polymorphed character.
Attempting to dig iron bars will wake nearby monsters instead of yielding
"you swing your pick-axe through thin air".
Autodig won't accept iron bars as candidate location.
<email deleted>
> Since Priests' knowledge of the buc-status of an object only
> kicks in when the name is being looked at for the first time,
> they get an "X" option when taking items out of a newly-looted
> container, but B, U, and C thereafter; could their ability be
> pre-applied to the container's contents when constructing the
> menu, to avoid this anomaly?
>
moveloop() sets a flag when a were/poly change should occur, but it
delays this change if the hero is Unchanging or cannot be interrupted (e.g.
praying). However, by the time the change can be applied, the reason
may no longer be valid. Reset the change indicator when this is the case.
Avoids possible strange polymorphs and were crashes.
Implement a fix for the problem From a bug report:
if the destination position on the Plane of Fire has a randomly
placed trap on it, you'd get an impossibility warning of "couldn't
place lregion type 5" (and then arrive successfully at the target
spot anyway). As his investigation indicated, the code to remove
such traps wasn't being reached because the `bad_location' check
yields true for trapped spots.
This throttles insect creation through monster spell casting. Especially
insects. It was creating m_lev worth of insects--for a 25th level priest,
that means every batch of insects was size 25!
I also lowered the range for nasties creation for similar reasons.
Add "travel" boolean option to enable/disable travel command.
Add "mouse_support" wincap option to enable/disable mouse.
- When running the win32 tty version full-screen, some people
complained about the square mouse cursor.
Newsgroups: rec.games.roguelike.nethack
Subject: Re: Getting rid of the cursor?
<email deleted> <email deleted>
Followup-To:
On Thu, 04 Apr 2002 00:20:06 <email deleted> wrote:
> Ok, let me be more specific: when playing the windows non-GUI version, is
> there a way to get rid of the large rectangular white cursor?
>
> <email deleted> wrote in message
> <email deleted>
>> Can you get rid of the cursor in the windows version? I really hate that
>> thing.
>>
<email deleted>
>Newsgroups: rec.games.roguelike.nethack
>Subject: Disabling Mouse Input
>
>I purchased an older P120 laptop to be able to play Nethack at the hotel.
>I find that I rest my thumbs on the mouse touch pad all too often and my
>@ moves unexpectedly at times. I took a peruse through defaults.nh, but
>came up empty.
>
>Anyone know if mouse input can be disabled?
>
>MRSisson
- this is brute force, always update the status line each time you
insert something into a container. If you look closely, you may still
see the Burdened message disappears momentarily doe to the many possible
messages between the freeinv() call and the point where the object is
actually put into the container.
Another fatal bug in win32 graphical interface
"Too many "dead" NHW_TEXT windows around. Repeating #? 15 times will produce
the same result."
>Wizard, wearing gray dragon scale mail and wielding Magicbane. The
>Dark One teleports next to me and I get the message "The Dark One
>casts a spell at you! A field of force surrounds you!". Then I get
>3 windows popping up: "Oops." "The dungeon collapses." "ERROR: No
>windows available..." and the game exits.
> I wish I could reproduce this reliably. Here's the method I've been using
> to do it:
>
> - Equip character (+4 gdsm, Magicbane, unicorn horn, see invisible,
> telepathy, key, "gain ability" potions to max out, enhance dagger skill
> to max, level change to 14)
> - Teleport down to the portal entrance. Go through the portal, get
> permission to go down to see the Dark One.
> - Go down to the Dark One's level, teleport over, open up his door, and
> basically just try to head back to the entrance and kill him.
>
> Two different things have happened while doing this so far. (I've been
> able to get errors something like 5 times out of many tries, and I haven't
> been about to do it at all in the TTY version - only the windows
> one.) Either I get the above message I mentioned to you, which seems to
> happen at a random time, or I get a slightly different result - "Oops,
> program initialization failed, ERROR: No windows available". This second
> result happened once _after_ I had killed the Dark One and was trying to
> #quit.
>
- the "Burdened" message could disappear from the status line if it was
updated partway thru in_container, clearing the bot flags. Re-order
message so it comes after add_to_container, as in 3.3.1.