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.
Fix the problem [reported in the newsgroup and forwarded by <Someone>]
of blessed potions of gain level having the possibility of reducing
your experience points if you were already level 30. The random XP
value that averages "half way to next level" could be less than your
current experience if you had gotten to level 30 via such a blessed
potion or had drunk at least one of same since reaching that level.
This didn't really make any difference to game play since you weren't
losing any levels, HP, mana, or score, but it was visible to users who
enable the `showexp' option.
R919 - applying lances
Fixes 2 bugs:
1) an impossible() could occur if you applied a lance against a long worm
because the code uses thitmonst to do the hitting, but didn't set bhitpos,
which is required before calling thitmonst.
Add the missing assignment.
2) applying a lance would never mark a knight as a caitiff. Added a new
check_caitiff function and called it from the 2 existing checks and in
the lance code.
> The intention is, I believe, to cater for the situation where you, a
> chest, and a dungeon-trap are all on the same square; previously
> (C340-71), you wouldn't have been able to check the chest for traps
> because an #untrap in direction '.' would always have tried to disarm
> the dungeon trap. However, since you can't trap-check containers on
> adjacent squares, it'd wouldn't hurt if the question was dispensed
> with when you specify a direction that isn't your square.
>
> (Note that "you cannot deal with traps while trapped!", so there's
> still several situations when you can't trap-check a chest on a
> trap-square, even though you can loot it, until you've untrapped
> yourself; is this really consistent? Should the if(u.utrap) check
> be moved to the "case y:" branch of the switch?)
chain summoning
This adds a further throttle to chain summoning. Monsters can only summon
spellcasting nasties if the nasties are lower level than the summoner, which
makes infinite chains impossible (as long as the player figures out which
monster to kill first).
kicking and killing an unseen monster
<Someone> reported that kicking [unlike hitting] an unseen monster
to death would leave an "I" on the screen. This was due to a missing
DEADMONSTER check. I also noticed that code to avoid leaving an extra "I"
behind when a monster jumps of of the way was only half right, resulting in
an extra "I" anyway.
riding speed
While riding, your speed was calculated using the steeds speed only when
moving multi locations. So, if you were walking step by step, it would use
your speed instead. Changed this to use the steed's speed any time actual
movement occurs.
R853 - Items inside statues lost
If you cast stone to flesh on a statue on a location containing a monster,
the statue would be turned into a corpse and the contents lost. This
didn't seem to be appropriate for the spell. Now the contents spill out.
cancellation, polymorphed and unchanging
<Someone> reported that a wand of cancellation would ignore Unchanging,
noting the case of cancelling yourself while polymorphed into a stone golem.
He thought the wand should win, killing the player. I felt otherwise,
since the case he specified passes the flag allow_cancel_kill == FALSE.
B01021 - Samurai quest doors
<Someone> wondered why there were no DOOR:nodoor specs for several doors in the
Samurai quest. I wasn't positive, but it seemed like these should have
been DOOR:closed, which is what I've added.
B01016 - misplaced "you steal" message after being blasted by an artifact
I saw no straight-forward way to insert the message earlier in the
sequence, so... I reasoned that you might not yet have a good grasp and
not be able to continue holding the object when reverting form. So, I made
this into a drop case and made the drop message a rare past tense message.
Past tense is still OK for the other drop cases.
While testing this, I noticed you'd keep stealing even after reverting
form. Added code to stop this. Finally, there was a missing MON_NOWEP
call in the stealing code, added it.
> > On Saturday, 6 Jul 2002, <Someone> wrote:
> > What's the rationale behind using "money" for what used to be
> > "gold" (as in "The hill orc picks up some money" or "You notice
> > you have no money!")? Has the zorkmid been devalued?
[...]
> At least let *leprechauns* pick up gold. Unlike orcs, they're not the
> kind to pick up just "money".
special level alignments
From the newsgroup a while back - special levels w/o a specific alignment
should inherit their alignment from the dungeon. Some places explicitly
checked the dungeon if the level alignment wasn't set, at least one did not.
rotten food and veggie conduct
<Someone> reported (in April) that eating cursed tripe, for example, did
not violate vegetarian conduct. This patch moves the various conduct
checks into common code that is executed before the rotten state of food is
determined.
avoid some glitches with a handheld compiler I was trying out
src\muse.c(904) : error C2143: syntax error : missing ';' before '__try'
src\muse.c(904) : warning C4091: ' ' : ignored on left of 'int ' when no variable is declared
src\muse.c(904) : error C2059: syntax error : '='
src\muse.c(916) : error C2059: syntax error : '__try'