nethack.rankin [Wed, 7 Aug 2002 08:04:27 +0000 (08:04 +0000)]
wishing fixes for "* glass"
The wishing code intended to make a wish for "blue glass" yield
a "worthless piece of blue glass" (and similarly for other specific
colors) but it didn't work right. Also, wishing for "looking glass"
tripped up on that same code and didn't work either. (Several other
permutations for worthless gems such as "worthless blue glass" and
"piece of glass" already do work.)
arromdee [Wed, 7 Aug 2002 05:17:45 +0000 (05:17 +0000)]
eating rings
Found on the newsgroup: someone pointed out that you don't get a message
when you eat a ring of increase damage. They thought it was intentional--
it's not.
nethack.rankin [Mon, 5 Aug 2002 09:54:07 +0000 (09:54 +0000)]
armor & busy hands
Fix some inconsistencies in armor handling. The 'T' command
wouldn't let you take off a suit or shirt if you were wielding a
cursed two-handed weapon, which makes sense; however, the 'A'
command neglected to impose the same restriction. Also, the 'W'
command had some code intended to prevent you from donning a suit
or shirt while wielding such a cursed weapon, but it didn't work.
This patch fixes the 'A' command's checks for whether an
item can be removed and it makes the 'T' and 'R' commands use the
same code as 'A' instead of maintaining multiple sets of checks.
It also fixes the trivial 'W' problem and attempts to prevent the
sequence of 1) get interrupted while removing a set of equipment
including suit and/or shirt; 2) wield a cursed two-handed weapon
or have already wielded one become cursed; 3) resume removing
armor via 'A' but I haven't tried to trigger that situation to
confirm the bug or this fix.
cohrs [Mon, 5 Aug 2002 00:57:21 +0000 (00:57 +0000)]
Magic portals and levitation boots
From a bug report. Removing levitation boots while hovering over
a magic portal causes the portal to be delayed since it takes time to
remove the boots. This causes the portal to be taken via unmul in allmain.
At that point, the will activation message display but you won't teleport
until you type something. Handle the delayed goto after unmul completes.
cohrs [Sun, 4 Aug 2002 23:39:42 +0000 (23:39 +0000)]
R06008 - Ludios level in score list
<Someone> reported that the Ludios level is shown on death. It's not
shown on the tombstone, but it was displayed in the topten list.
Now it's not shown in the topten list either.
cohrs [Sun, 4 Aug 2002 23:04:56 +0000 (23:04 +0000)]
R06006 - travel command infinite loop
The problem was caused by a test that was added to test_move() to test the
move as a regular move if it was the next step. This case affected
boulders and closed doors, both of which are handled in later in do_move().
Remove the check. I think this was something I thought was needed for an
intermediary version of the travel command fix, but turned out to be
detrimental in the current version.
nethack.allison [Sun, 4 Aug 2002 22:14:02 +0000 (22:14 +0000)]
Generalize cmdassist direction help
to work with any call to getdir().
When cmdassist is set, instead of the
message:
"What a strange direction!"
you get a screen of help showing the valid direction keys.
!cmdassist will suppress the extra help information.
nethack.allison [Sun, 4 Aug 2002 16:48:15 +0000 (16:48 +0000)]
newbie in-game assistance with Guidebook notation
Provide some command assistance for newbies, but
suppress it with !cmdassist in the config file.
If someone misinterprets the Guidebook ^D, ^T
type command notation, this will pop up some
further information to possibly assist them and
explain the notation.
nethack.rankin [Thu, 1 Aug 2002 23:20:34 +0000 (23:20 +0000)]
artifact manipulation
Fix an item from <Someone>'s list: invoking or applying an
artifact might blast you; if it evades your grasp, the intended
action won't take place but will still use up a turn.
nethack.rankin [Thu, 1 Aug 2002 20:58:39 +0000 (20:58 +0000)]
dragon scale mail is magical
This reclassifies dragon scale mail as magic and leaves dragon
scales as non-magic. Changing the latter would make it be easier
to obtain magic armor via polymorph; just kill some dragons and toss
their scales on the pile. Unfortunately the logic used suggests that
unicorn horns ought to be non-magic too, but I left them as magic.
(Making them become non-magic would actually be a good idea as far
as balancing polypiling goes, but it's awfully hard to justify when
they produce should a wide-ranging magical effect when applied.)
R1024 - Eyes of the Overworld effect delayed
The effect of the EOTO did not take effect until the next move.
Added a vision_full_recalc as suggested to resolve the problem.
Several flags added since 3.4.0 were destined for flags
(to be saved with the game) but were placed in iflags for
savefile compatibility. These include:
boolean lootabc; /* use "a/b/c" rather than "o/i/b" when looting */
boolean showrace; /* show hero glyph by race rather than by role */
boolean travelcmd; /* allow travel command */
int runmode; /* update screen display during run moves */
This patch has no effect unless you define this in your port's
XXconf.h file.
#define SAVEFILE_340_CONVERT /* allow moving of some iflags fields to flags
without destroying savefile compatibility */
Without it, the new flags remain in "iflags." With it, the flags are moved to
"flags" and the structures are converted when the save file is read. There
is no reverse compatibility. If you save the game after conversion, you
can't load the savefile on 3.4.0, only 3.4.1.
Provide user control over screen updating for multi-step movement
(run via shift, control, &c and also travel). [See cvs history for
fixes34.1 for more details.]
<Someone>'s submittal of his `showrun' option has goaded
me to finally finish something I tried to implement some time back.
This adds a new run-time option called "runmode" which gives the
user control over how much screen udpating takes place during run
and travel movement. It has four settings:
teleport - update the map after movement has finished (this is
the old behavior and also <Someone>'s !showrun behavior);
run - update the map periodically (this is the new default);
it uses (`moves' mod 7) to control the updating; it may
need to have its own counter so that the updates are
sync'd with the start of current movement rather than
with `moves', but perhaps that won't matter;
walk - update the map after each step (this is the behavior
when <Someone>'s showrun is enabled);
crawl - like walk, but with a longer delay after each step.
This option won't work well on configurations where delay_output()
doesn't produce a pause of reasonable duration, but I don't think
there's much we can do about that.
The option setting ought to be stored in struct flags so that
it's maintained across save/restore cycles, but I put it into the
iflags structure with the other new options so that it won't cause
3.4.0 save files to be invalidated.
I can't test the changes to Guidebook.mn; the corresponding
changes to Guidebook.tex process ok and don't show any obvious
glitches when viewed with xdvi.
"It was hidden under a green mold corpse! It bites!"
Never seen corpse from a never seen monster can be
revealed by the hider.
-problem is that the corpse of the monster is
always created with dknown set to 1 when make_corpse() finishes,
even in the case where you never knew what it was while alive.
From the newsgroup, there was a discussion about how you
can't just blind yourself with a cream pie in your inventory
directly by applying it or by throwing it.
On 27 Jul 2002 14:11:06 GMT, <Someone> wrote:
> <email deleted> wrote:
>> <email deleted> (<Someone>) hypothesised:
>>
>> [cream pie]
>>> So I a)pply the pie. What I want to do is to hit MYSELF in the
>>> face with the pie, thereby blinding me and giving me T-P for
>>> just a few turns.
>>
>> Not a bad TTDTDTO ("Thing The DevTeam Didn't Think Of," which is
>> subtly different to a YANI, and not a bug; sorry, I seem to be
>> on a neologismathon today.)
> I tried throwing a cream pie upwards, hoping it would blind me,
> but no luck:
>
> "A cream pie hits the ceiling. What a mess!"
>
Change the message for paying off consumed items to
"You paid for a xxxx at a cost of nnn gold pieces."
to distinguish it from objects that you still have in your inventory which is
"You bought a xxx for nnn gold pieces."
Current source compiles fine, seems to work ok (launches, runs, opens windows
and quits as usual). I haven't had much time to test it rigorously (or play
at all), but I don't remember there having been any major changes that would've
affected the amigaport, so it probably should be okay as it is.
Kicking a monster as a monk or samurai or while wearing kicking
boots might make it "reel from the blow" and be knocked back a step.
If that knock back put it into a trap which killed it, the kicking
code would kill it an extra time, then the player would get a warning
about dmonsfree finding the wrong number of dead monsters.
[ I didn't keep a copy of the message which reported this
so don't have any reference number for it. ]
If you used '/' to look at multiple items one after another,
then looking at floor or other item represented by the same '.' as
venom could result in subsequent things being falsely categorized as
possibly venom. The subsequent items needed to have less than two
possible descriptions, and the triggering item needed to be a plain
dot rather than the graphic dot used for floor with IBMgraphics and
DECgraphics.
Suggested by <Someone>: when examining an `@' monster, only include
"or you" in the description if you might reasonably expect to be seen
as something else. So if you're playing as a human or an elf, or if
you're polymorphed regardless of race, the ordinary description of
"human or elf" doesn't need to add "or you". And the setting of the
`showrace' option only matters if the `@' comes from prompting the
user instead of picking a symbol from the map.
Paper golems destroyed by fire traps won't leave any scrolls
of blank paper behind. (There's still no handling of other forms
of fire attack against such critters.)
Don't suppress hallucination on/off messages when blind.
This fixes the case where you might be observing hallucinatory
monsters via telepathy yet not be told that perception was back
to normal when hallucination timed out. It does not fix the
case where temporary hallucination times out while the effect is
being blocked (in which case successful application of a unicorn
horn yields no feedback), nor the hypothetical cases where timed
hallucination starts or ends while also hallucinating for some
other reason (which could happen via polymorph someday if a
monster which is always hallucinating--the way that bats are
always stunned--ever gets introduced).
Make throwing things through iron bars by the player and
by monsters behave consistently with each other. Also prevent
stone-to-flesh'd boulders and wands from passing through.
Store plname in save files (and restore it).
Move get_saved_games() functionality to files.c
Use moved get_saved_games() functionality in Qt windowport.
[also some non-enabled perminv code in Qt windowport]
WIN32: file naming
Allow single character variations in player names
to remain unique in file names by encoding rather
than substituting.
"plnam one", "plnam_one", and "plnam~one" at the
"Who are you?" prompt get unique filenames after this patch.
(From <Someone>)
> It's probably best to empty
> mswin_update_inventory() in win\win32\. If I
> remember correctly there is some code in there now
> which probably behaves badly if perm_invent is
> switched on
Implement a suggestion by <Someone> that turns spent in
"hungry" state exercise wisdom for monk characters; also make
turns spent in "satiated" state abuse it instead.
for now at least, until there is more time to look into it.
<email deleted>
> Yet more nitpicking about potions of oil being lit by sparks from axed
> statues, I'm afraid.
>
> Konosja's potions of oil catch light!
> "That will cost you 66 zorkmids (Yendorian Fuel Tax)."
> "That's in addition to the cost of Konosja's potions of oil themselves, of
> course."
> You snuff the lit potion.
>
> a) why is the Fuel Tax on (in this case) six potions the same as on one?
>
> b) if you a)pply-light a potion, it's just "in addition to the cost of
> the potion". Is Yname2() the right name-function for catch_lit() to
> be using? It's odd for Konosja to be talking about herself in the
> third person.
>
> c) Grammar on the snuffing message is wrong for multiple potions.
minetown guards outside the town proper
Pat forwarded a message from the newsgroup in March that the town guards
enforce rules even outside the town proper. Fix: On room-based town levels,
check if the location is in a room containing subrooms (roomno will often
have a subroom id instead). On the other levels (e.g. minetn-5), there are
no subrooms, so the whole level is fair game. Currently, this is valid.
If fancier towns are added in the future, more flags or use of regions may
be required to tell where the town border actually is. These checks are done
in a new in_town function.
B04010 - paper golems and fire traps
Paper golems take 100% damage in a fire trap. Straw is very flammable
unless tightly packed, but straw golems have a lot of surface area, so give
them 50% damage.
containers and objects in special level descriptions
On mazelike levels, containers had to be listed before their objects. But,
for roomfilled levels, containers had to be listed _after_ the objects. All
our current levels that use containers with objects are mazelike, so I
changed the room behavior, updating the comment in lev_comp.y to match.
Other items/monsters are still processed in reverse on roomfilled special
levels, but I think this is OK.
B04009 ftn msg when blind/!invis and gain see invis.
<Someone> writes:
Why do you "feel transparent" when you gain see invisible from a
fountain when blind and _not_ invisible? Transparency usually refers
to _being_ invisible.
B04009 ftn msg when blind/!invis and gain see invis.
<Someone> writes:
Why do you "feel transparent" when you gain see invisible from a
fountain when blind and _not_ invisible? Transparency usually refers
to _being_ invisible.
Good point. I think this may have been what was intended, but it's
been like this for quite a while.
<Someone> writes:
I can accept that losing gold into a fountain recharges it to make it
possible to find a gem in it in future (however weird that is). What
_does_ seem wrong is that receiving a warning about a Minetown
fountain prevents finding gems and gold there.
This does not fix a reported bug where you
can't attack a hidden creature that is
co-located with a boulder, but it might
assist the player in understanding what is
going on.
B04005 - leash and uncontrolled teleportation
<Someone> reported that after an uncontrolled teleport due to eating a
leprechaun, his leashed pet was still leashed until he took one more step.
The usual approach which included disallowing the teleport seemed wrong in
this case, so I put in an abbreviated version that does its checks but does
not disallow the teleport. The pet teleports with you in the same cases as
other teleports, but when it doesn't, the leash snaps loose.
dwarvish indecision
<Someone> (and later <Someone>) reported along with several other
things of a dwarf that stood in place and switched between his pick-axe and
broadsword on successive turns. Fixed by bringing the logic in the two
cases in line. The code now prefers to leave the hostile dwarf with a weapon.
R888 - panic while quaffing a potion of levitation
Now that the in_use flag is set for potions being quaffed, use the in_use
flag in general in destroy_item to avoid destroying the in use object, on
the assumption that the caller will call useup when finished. There are a
few places that set then unset in_use, but these don't currently result in
a call to destroy_item. The current_wand hack was not removed, since its
logic appears to allow destroy_item to still destroy the item.
B04004 - naming polymorph potions
Provide a chance for the player to name a polymorph potion if you dip
something into it and nothing happens.
Also fix several places in dipping and drinking potions where the HUP cheat
would allow you to use the potion a 2nd time, made more important since
the polymorph sequence includes what is currently a unique message.
When using a fountain or throne, getting a --More-- prompt
usually means that you're about to be told that it has just dried
up or vanished. But since that topology change didn't occur until
after the message, players could cheat by forcing SIGHUP instead
of answering the prompt; the resulting save file would retain the
original topology. So change the dungeon prior to telling the user
about it.
The `fixes' entry possibly belongs in the tty-specific category
but since the change is to core code I put it in the general section.
The spellcasting code stopped counting a spell class's skill
exercise once that reached expert, so the only way that it could
end up being flagged as having reached maximum in the #enhance
feedback would be if it had already received enough exercise to
reach the hypothetical level beyond expert while it was still at
skilled or less.
It also didn't count the exercise if you were restricted in
the spell class, but that wasn't necessary because becoming
unrestricted--which I don't think is even possible for spells at
present--resets the counter back to 0 to discard any exercise
achieved while ineligible.