]> granicus.if.org Git - nethack/log
nethack
18 years agostartup menu crash follow up (trunk only)
nethack.allison [Sat, 1 Jul 2006 19:32:27 +0000 (19:32 +0000)]
startup menu crash follow up (trunk only)

Pat:
Either both editions [of bot()] should reset those botl flags
or neither one should.

18 years ago<Someone> wrote:
nethack.allison [Sat, 1 Jul 2006 18:44:18 +0000 (18:44 +0000)]
<Someone> wrote:
> NetHack feedback form submitted by
> <email deleted> on Friday, June 30, 2006 at 17:31:12
> ---------------------------------------------------------------------------
>
> mailversion:1.35
>
> nhversion:3.4.3
>
> nhfrom:Our 3.4.3 source release, unmodified

> comments:
> telnet nethack.alt.org with the terminal set to 21 rows.
> Choose to pick a char, not accept pot luck, and game segfaults.
> (same happens from linux console)

I was able to reproduce something similar in win32 by setting
the console to 21 rows. As he stated, don't let the game pick you
character for you to reproduce the problem. As soon as I chose
Archeologist the problem occurred:

Where:
  In hack.c, weight_cap()
   if (Levitation || Is_airlevel(&u.uz)    /* <email deleted> */
  #ifdef STEED
|| (u.usteed && strongmonst(u.usteed->data))
  #endif
)

Variables:
carrcap 200
u.usteed 0x00000000
&u.uz 0x005e54aa
youmonst.data 0x00000000

Examination of the preprocessor output of that section
of code reveals that
"Levitation" becomes:
    (u.uprops[47].intrinsic || u.uprops[47].extrinsic ||
((youmonst.data)->mlet == 5))
so it is the is_floater(youmonst.data) causing the crash.

Call stack:
  weight_cap() line 2300 + 24 bytes
  inv_weight() line 2342 + 5 bytes
  calc_capacity(int 0) line 2354 + 5 bytes
  near_capacity() line 2365 + 7 bytes
  bot() line 607 + 5 bytes
  docorner(int 47, int 19) line 2378
  erase_menu_or_text(int 5, WinDesc * 0x00a22550, char 0) line 994 + 25     bytes
  tty_dismiss_nhwindow(int 5) line 1664 + 15 bytes
  tty_select_menu(int 5, int 1, mi * * 0x0006fc40) line 2248 + 9 bytes
  tty_player_selection() line 442 + 16 bytes
  pcmain(int 3, char * * 0x00a20eb0) line 457
  main(int 3, char * * 0x00a20eb0) line 91 + 13 bytes

This adds a check for a valid youmonst.data in
bot().

18 years agoheader reorg (trunk only)
nethack.rankin [Thu, 29 Jun 2006 05:03:15 +0000 (05:03 +0000)]
header reorg (trunk only)

     Move the new VOID_ARGS and some other argument manipulation stuff
from global.h to tradstdc.h where it feels like a better fit.  Make the
definition of VOID_ARGS more general; it should work nearly everwhere
these days even if it is only needed for one configuration.  XXXconf.h
can redefine it as empty if necessary.

     For MONST_P and OBJ_P, I left "void*" as is but I'm pretty sure that
the lack of space in between the two components was never part of the
issue there.  (The Ultrix system I used to have access to is long gone.
It was chugging along on autopilot, effectively defenseless, at the time
a linux box on the same subnet got hacked.  It probably would have been
shut down for Y2K anyway if it had lasted til then.)

18 years agolint bit
nethack.rankin [Thu, 29 Jun 2006 03:06:46 +0000 (03:06 +0000)]
lint bit

18 years agoregion ttl field size change (trunk only)
nethack.allison [Wed, 28 Jun 2006 02:34:02 +0000 (02:34 +0000)]
region ttl field size change (trunk only)

make region ttl field a long instead of short to get rid of lint warnings
about a possible loss of data

18 years agoremove duplication
nethack.allison [Tue, 27 Jun 2006 00:17:35 +0000 (00:17 +0000)]
remove duplication

Janet pointed out that I must have just hought I was seeing double :-)

18 years agofixes34.4 catch up
nethack.allison [Mon, 26 Jun 2006 20:19:40 +0000 (20:19 +0000)]
fixes34.4 catch up

18 years agoInstall.nt updates
nethack.allison [Mon, 26 Jun 2006 11:02:36 +0000 (11:02 +0000)]
Install.nt updates

- Additional information for using MS VC++ 2005 Express Edition in
  combination with the Platform SDK.

18 years agoAllow makefile build with VC2005 (trunk only)
nethack.allison [Sun, 25 Jun 2006 22:40:58 +0000 (22:40 +0000)]
Allow makefile build with VC2005 (trunk only)

18 years agofunction pointer assignment warnings in VC2005
nethack.allison [Sun, 25 Jun 2006 19:54:31 +0000 (19:54 +0000)]
function pointer assignment warnings in VC2005

The latest Micrsoft compilers complain when a function is
assigned to a function pointer, and the function's argument
list does not match the prototype precisely.
It was evem complaining about the difference between this:
     int x()
     {
        [...]
     }
and a prototype of
     int x(void);
when assigning that function's address to a function pointer.

This quiets those warnings, without suppressing the mismatch
check altogether for more serious mismatches.

18 years agodetected hidden monsters
nethack.rankin [Thu, 22 Jun 2006 05:03:48 +0000 (05:03 +0000)]
detected hidden monsters

     From a bug report, attempting to attack
a hidden monster who is revealed by ongoing monster detection (blessed
potion or skilled spell) gave "wait!  there's a <monster> hiding there"
response and prevented the attack.  Make it behave the same as when the
hidden monster is revealed by telepathy; the monster comes out of hiding
and the hero's attack proceeds.

18 years agocomment tidbit (trunk only)
nethack.rankin [Thu, 22 Jun 2006 04:57:27 +0000 (04:57 +0000)]
comment tidbit (trunk only)

18 years agoshop theft/breakage (trunk only)
nethack.rankin [Thu, 22 Jun 2006 04:08:40 +0000 (04:08 +0000)]
shop theft/breakage (trunk only)

     The recent fix for "breaking glass wand in tool shop" looked suspect,
adding a call to costly_alteration after an existing call to stolen_value.
Either one or the other ought to suffice.  (For items on the floor,
costly_alteration() calls stolen_value(); for items in inventory, or just
released from inventory and not placed on floor yet, costly_alteration()
adds a usage fee to the shop bill but doesn't annoy the shopkeeper into
adding surcharges to prices or summoning the kops if already hostile.)

     In 3.4.3, stolen_value() wasn't smart enough to charge for an out-of-
shk's-field item (like a wand in a tool shop) taken from a shop container,
and that's the problem the user was reporting.  But the post-3.4.3 code was
changed to handle that by checking billable() instead of saleable(); this
bug should have been gone.  Unfortunately, billable() treats items already
on the bill as not interesting--from the perspective of adding things to
the bill--so the change accidentally resulted in stolen_value() no longer
handling objects which are marked unpaid, triggering the same symptom for
a different reason.  (Other events besides the breakage of thrown objects
suffered from the bug's new incarnation since various places deliberately
call stolen_value() for unpaid objects.)  This updates stolen_value() and
stolen_container() to account for the behavior of billable().  And a few
calls to subfrombill() go away since stolen_value() now takes care of that.

18 years ago#tip horn of plenty (trunk only)
nethack.rankin [Tue, 20 Jun 2006 02:31:37 +0000 (02:31 +0000)]
#tip horn of plenty (trunk only)

     Bug in #tip handling for horn of plenty.  Emptying one while levitating
would trigger an "obj not free" panic by flooreffects() due to following
hitfloor() with redundant/inappropriate dropy().

18 years agobag of tricks, horn of plenty, #tip (trunk only)
nethack.rankin [Sun, 18 Jun 2006 05:20:36 +0000 (05:20 +0000)]
bag of tricks, horn of plenty, #tip (trunk only)

     <Someone> reported that he applied an unID'd bag and it became
discovered as a bag of tricks even though a spellbook appeared on the floor
next to him rather than having a monster show up (the monster was a mimic).
Suppress the bag discovery unless you can see or sense a monster appear.
(This doesn't really achieve much for most players, who'll recognize the
bag because they know that only one type of container doesn't prompt to
take things out and/or put things in, but I think it does make sense.)

     While mucking with bag of tricks I decided that to be consistent with
the behavior of other containers, the #tip command should release all the
monsters in the bag instead of just one.

     And after doing that, I realized that horn of plenty ought to behave
much the same, so #tip will operate on it now.  However, it won't be listed
as a likely candidate in the "which item?" prompt unless/until it has been
discovered.  (Attempting to empty any other type of horn yields "nothing
happens", same as for a horn of plenty with no charges left.)  Emptying a
horn of plenty in a shop can be extremely verbose, but I don't think that
qualifies as a bug and don't currently have any plans to alter it.

18 years agowielded candles vs rust (trunk only)
nethack.rankin [Sat, 17 Jun 2006 04:43:44 +0000 (04:43 +0000)]
wielded candles vs rust (trunk only)

     From a bug report: [ slashem-Bugs-1206099 ] Torches are not extinguished with rust traps).
A rust trap that hits the torso candles causes all lit objects being carried
to be extinguished, but one which hit the weapon arm didn't have same affect
on a wielded light.  This fix causes wielded candles or lamps (not Sunsword)
to go out if affected by any rust, such as hitting a rust monster with one,
rather than use his patch that just handled the trap case.  It also excludes
wielded lights from the existing torso splash since having them be hit by
both instances is too obviously buggy.

     I think brass lanterns ought to be exempt from being extinguished by
water (at least splashing which is less drastic than total submersion) since
there are references to them operating by batteries rather than fire, but I
didn't want to track all the places which would be affected.

18 years agothrowing and breaking glass wand in shop (trunk only)
nethack.allison [Wed, 14 Jun 2006 23:44:16 +0000 (23:44 +0000)]
throwing and breaking glass wand in shop (trunk only)

<email deleted> wrote:
> - when in a hardware store, I put a glass wand out of a sack (the glass wand
> will cost you 266 zorkmids) and threw it in the shop => shattered into a
> thousand pieces BUT if I try to pay, I do not owe the shopkeeper anything !!!
> If I break a potion with a /oS, I have to pay !

18 years agowin32 embedded version info
nethack.allison [Wed, 14 Jun 2006 10:48:09 +0000 (10:48 +0000)]
win32 embedded version info

I noticed that the NetHack version being reported in the
system's event log was old:
Faulting application nethackw.exe, version 3.4.2.0,
faulting module nethackw.exe, version 3.4.2.0, fault address 0x001648eb.

18 years agoscroll learning follow-up (trunk only)
nethack.allison [Wed, 14 Jun 2006 02:53:13 +0000 (02:53 +0000)]
scroll learning follow-up (trunk only)

18 years agoanother null scroll reference (trunk only)
nethack.allison [Wed, 14 Jun 2006 02:38:53 +0000 (02:38 +0000)]
another null scroll reference (trunk only)

18 years agofix null pointer reference (trunk only)
nethack.allison [Tue, 13 Jun 2006 21:59:55 +0000 (21:59 +0000)]
fix null pointer reference (trunk only)

This problem only existed in post 3.4.3 code, so no fixes entry.

18 years agopolyself bit (trunk only)
nethack.rankin [Tue, 13 Jun 2006 03:15:03 +0000 (03:15 +0000)]
polyself bit (trunk only)

     Some recent code shuffling introduced an unintended change in behavior
(not observable to the player; just unnecessary deletion and re-creation of
light source with identical radius when polymorphing from one light emitting
form to another).  The fixup for light range 1 would need to be repeated for
`old_light' when outside the `if (old_light != new_light)' block; move it
back inside where that isn't required.  Also, youmonst.data is valid all the
time so a couple of `Upolyd' tests in the surrounding code can be dropped.

18 years agobuild warning
nethack.allison [Sun, 11 Jun 2006 18:27:55 +0000 (18:27 +0000)]
build warning

- remove an unreferenced variable
- continue with recent code trend towards having DEADMONSTER()
  check in its own if/continue statement in a few more places

18 years agopolyself changes (trunk only)
nethack.rankin [Sun, 11 Jun 2006 06:09:35 +0000 (06:09 +0000)]
polyself changes (trunk only)

     Several polymorph tweaks, most dealing with specifying form under
polymorph control or for wizard #polyself:
1) allow "were<critter>" and "human were<critter>" for your type of
   <critter> when you're inflicted with lycanthropy; now you'll toggle
   shape rather than be told "you cannot polymorph into that".
2) allow your own role; now you'll become a new man (or whatever race)
   rather than get "you can't".
3) allow "human" to force a new man (or whatever) regardless of race.
   No change for human characters, but elves, dwarves, and such can now
   use either their own race or "human".  (They never become humans.)
4) for wizard #polyself only, override the 20% chance of becoming a new
   man instead of taking on the selected form.  (This implicitly prevents
   the annoying "your new form isn't healthy enough to survive" death
   since your experience level won't drop below 1.)
5) remove a redundant drowning check in polyself(); it's already handled
   in polymon() and polyman(for newman()) via spoteffects().

     This also gets rid of an old use of 0 as not-a-valid-monster (not
responisble for any bugs though since giant ants aren't lycanthropes).

18 years agotemple sounds (trunk only)
nethack.rankin [Sun, 11 Jun 2006 04:00:40 +0000 (04:00 +0000)]
temple sounds (trunk only)

     The user (<email deleted>) who recently suggested a
dump command for containers also wanted atmospheric sounds on levels which
have altars.  Right now we'd have to find unattended altars the hard way
(by scanning the entire level) but we could add a counter (or set of
counters, one per alignment) like for fountains and sinks if we really
wanted to do that.  [Now that I think about it, the #overview patch may
have already done something of the sort.]  But what noises would an altar
be expected to produce?  This only adds sounds for temples, where the
attending priest can be the source of the noise.

     I'm not real thrilled with the initial set of sounds, particularly
the hallucinating one, but the implementation works.  The "carcass" one is
a little clumsy; it's intended to add a hint for new players who haven't
figured out what the #offer command does.

18 years agocharging scroll fix (trunk only)
nethack.rankin [Thu, 8 Jun 2006 05:05:33 +0000 (05:05 +0000)]
charging scroll fix (trunk only)

     A while back some code ended up in the wrong order, resulting in null
pointer dereference when reading a not-yet-discovered scroll of charging.

18 years agofollow-up for lost ball and chain
nethack.allison [Wed, 7 Jun 2006 01:46:41 +0000 (01:46 +0000)]
follow-up for lost ball and chain

18 years agolost ball and chain (trunk only)
nethack.allison [Sat, 3 Jun 2006 17:55:24 +0000 (17:55 +0000)]
lost ball and chain (trunk only)

Saving the game while punished, not carrying the attached ball,
and while swallowed by a purple worm resulted in losing the
ball and chain.

Since the required information was not being written to the
save file at all, I couldn't come up with a clean way to do this
for the branch, and preserve save file format. I could think
of lots of kludgy ways to do it (insert ball and chain into
the hero's inventory prior to saving, and remove it on restore, etc.)

18 years agolost ball and chain (trunk only)
nethack.allison [Sat, 3 Jun 2006 17:48:22 +0000 (17:48 +0000)]
lost ball and chain (trunk only)

Saving the game while punished, not carrying the attached ball,
and while swallowed by a purple worm resulted in losing the
ball and chain.

Since the required information was not being written to the
save file at all, I couldn't come up with a clean way to do this
for the branch, and preserve save file format. I could think
of lots of kludgy ways to do it (insert ball and chain into
the hero's inventory prior to saving, and remove it on restore, etc.)

18 years agogolem life
nethack.rankin [Thu, 1 Jun 2006 04:27:35 +0000 (04:27 +0000)]
golem life

     When testing the spoteffects/drown hack I noticed that draining myself
with Stormbringer (toss up, get hit on head) while in iron golem form gave
messages about it drawing or draining life.  (I'm sure that this has come
up before....)  I've altered the artifact hit message rather than making
golems become resistant, although the opposite approach seems at least as
valid.  The drain life spell uses different wording and isn't affected.

18 years agorecursive spoteffects (trunk only)
nethack.rankin [Thu, 1 Jun 2006 03:54:25 +0000 (03:54 +0000)]
recursive spoteffects (trunk only)

     Attempt to fix a buglist item:  if hero poly'd into iron golem form
enters a pool of water and drowning triggers reversion to human/whatever
form due to water damage, he will fall into that pool again, crawl or
teleport out, then redundantly crawl or teleport out for the initial entry.
[ spoteffects -> drown -> losehp -> rehumanize -> polyman -> spoteffects
  -> drown ]

     I don't have a lot of confidence in this fix.  It does handle the
reported problem, and hasn't broken a couple of earlier tricky cases
(ice melting to water, land mine turning into a pit).  But drown() and
lava_effects() seem to leave a trail of special case handling wherever
they appear so they--or spoteffects, or both--ought to be redone somehow.

18 years agobuild warning
nethack.allison [Tue, 30 May 2006 05:07:16 +0000 (05:07 +0000)]
build warning

a recent patch triggered a new warning:
cmd.c(995) : warning C4101: 'numbuf' : unreferenced local variable

18 years agoinvocation vs being trapped
nethack.rankin [Tue, 30 May 2006 04:07:34 +0000 (04:07 +0000)]
invocation vs being trapped

     I can't find the report about this; I must have deleted it after
reading, or else recently reread something so old that I'm not going back
far enough now.  When you perform the invocation ritual to create the
stairs down to Moloch's Sanctum, any trap at your location gets deleted.
But if you were in a trapped state at the time then you got left in that
state.  Descending stairs doesn't check for traps so you wouldn't notice
unless you tried to move around on the same level first.  Then you'd get
"you're stuck in a pit/beartrap/web" even though it wasn't there anymore.

18 years agounseen monsters vs hiding hero
nethack.rankin [Sat, 27 May 2006 04:13:20 +0000 (04:13 +0000)]
unseen monsters vs hiding hero

     While testing the hiding vs traps patch, I became a mimic and hid.
  It gets stuck to you.
Huh?  Nothing was visible; nothing became visible (aside from the ']' at my
position changing back to 'm').  Display the invisible monster glyph when
an unseen monster bumps into you while you're hiding or mimicking gold.
That's usually handled by the hit and miss routines, but they aren't used
when you're just brought out of hiding instead of attacked.

18 years agomore hiding monsters vs traps (trunk only)
nethack.rankin [Sat, 27 May 2006 03:58:35 +0000 (03:58 +0000)]
more hiding monsters vs traps (trunk only)

     Previous patch only handled hides-under monsters and the hero; this
takes care of other hiding monsters.

18 years agohiding monsters vs traps (trunk only)
nethack.rankin [Sat, 27 May 2006 03:46:03 +0000 (03:46 +0000)]
hiding monsters vs traps (trunk only)

     From a bug report, the game gave feedback
about a monster becoming stuck in a web but there seemed to be no monster
around because it immediately began hiding under an object at the web's
location.  Prevent monsters--or poly'd hero--from hiding when trapped in
anything other than a pit or spiked pit.  Also, prevent them from hiding if
they're holding you or you're poly'd and holding them.  I'm not sure whether
either of those cases ever actually happened but big mimics are capable of
both hiding and grabbing on.

18 years agofix #H108 - lost protection
nethack.rankin [Sat, 27 May 2006 01:58:22 +0000 (01:58 +0000)]
fix #H108 - lost protection

     Fix the problem From a bug report, where
giving a temple donation of the appropriate amount would fail to restore
protection previously stolen by gremlin attack iff the old protection amount
was big enough that the donation wouldn't have yielded a bonus in the normal
not-stolen case.  It shouldn't be checking the magnitude of u.ublessed at a
time when lack of the intrinsic renders that value inoperative.  After this
fix, the lost intrinsic will be granted and the old protection value will
be restored, same as happens when a prayer boon yields divine protection
(where no u.ublessed magnitude check is made) and as happened with donations
when the old protection was a more modest amount (magnitude test passed).

18 years agoprotection enlightenment (trunk only)
nethack.rankin [Sat, 27 May 2006 01:26:50 +0000 (01:26 +0000)]
protection enlightenment (trunk only)

     Yesterday's change to have enlightenment give "you have a <small,
moderate,&> defense bonus" instead of "you are protected" would yield
"you have a small defense penalty" if the combined protection value (from
rings, divine gift, and spell) was 0.  This changes the formatting routine
to give "you have no defense bonus" in that situation, then changes the
caller to only display the protection/defense attribute when non-zero so
the "no bonus" case will never actually happen.

18 years agoenlightment for protection and magic cancellation (trunk only)
nethack.rankin [Fri, 26 May 2006 03:31:57 +0000 (03:31 +0000)]
enlightment for protection and magic cancellation (trunk only)

     The bug report about losing/regaining the Protection intrinsic reminded
me of a couple of things.  First, as an intrinsic, Protection seems to be
completely useless and we ought to redo it.  Second, periodically people in
the newsgroup have complained about how it's nearly impossible to figure
out the important--possibly crucial--armor attribute of magic cancellation.
Wearing a cloak greatly increases characters' survival rates, but beyond
that, magic cancellation is just spoiler fodder.

     This doesn't do much about Protection other than to change "you are
protected" into "you have a <small,moderate,&c> defense bonus" similar to
how the attributes conferred by rings of increase damage and increase
accuracy are handled.  For magic cancellation, it adds new feedback:
  You are protected.  -- mc factor 3
  You are guarded.    -- mc factor 2
  You are warded.     -- mc factor 1
(with no extra feedback for mc factor 0, the normal naked state.  The mc 3
case might cause some confusion over the changed meaning of a previously
existing item, but I think it'll be ok and not need re-wording.)

18 years agofix [part of] #H103 - misleading prompt when choosing role,&c
nethack.rankin [Thu, 25 May 2006 05:43:49 +0000 (05:43 +0000)]
fix [part of] #H103 - misleading prompt when choosing role,&c

     From a bug report, specifying role and race
along with invalid alignment for that role/race combination resulted in a
prompt of "pick the alignment of your chaotic human Valkyrie".  This fixes
that particular problem, but the role selection code is incomprehensible
and I don't have a lot of confidence about whether other combinations have
similar trouble.

     This also fixes an obvious typo in ok_align().  Unfortunately I can't
figure out what to do with the if-then-else block in root_plselection_prompt
which has identical code for its `then' and `else' halves (in the alignment
code that the new ok_align() test skips).

18 years agofix #H105 - inconsistent handling of "meditating" monsters (trunk only)
nethack.rankin [Thu, 25 May 2006 04:36:11 +0000 (04:36 +0000)]
fix #H105 - inconsistent handling of "meditating" monsters (trunk only)

     From a bug report, monsters with the wait
strategy (described as "meditating" by stethoscope probing) could be
affected by music but left meditating.  Various wake up attempts shared
the same situation.  Finish waiting if the monster would have been woken
(or pacified).  I didn't search for places that diddle the msleeping bit
directly instead of calling one of the assorted wake() routines.

     A fair bit of this is making usage of DEADMONSTER() be consistent.
Sooner or later there'll be another monster movement overhaul and those
    if (DEADMONSTER(mon)) continue;
statements will all go away.  (Probably just wishful thinking.)

18 years agofix #H104 - misnamed high priestess
nethack.rankin [Thu, 25 May 2006 03:44:34 +0000 (03:44 +0000)]
fix #H104 - misnamed high priestess

     When high priests have their affiliation suppressed to avoid giving
away which altar is which on the Astral level, the name formatting also
bypasses the code that converts "priest" into "priestess" for females.
(The bug report was about Moloch's high priestess; the occupant of the
Sanctum's temple gets similar handling to those on Astral.)

     Also a tidbit for a change made a couple of days ago.  Avoid using
"Manlobbi the invisible shopkeeper" or "Asidonhopo the newt" in the message
given when a shk refuses an attempt to be renamed via the 'C' command.

18 years agorenaming shopkeepers and priests
nethack.rankin [Tue, 23 May 2006 04:09:23 +0000 (04:09 +0000)]
renaming shopkeepers and priests

     From a bug report, the 'C' command wasn't reporting that
"<shopkeeper> doesn't like being called names" even though the user's
supplied name was ineffective.  Same thing for temple priests and other
minion monsters; the name was accepted but didn't do anything.  Make such
monsters reject new names.

18 years agoadjattrib() feedback (trunk only)
nethack.rankin [Sun, 21 May 2006 05:32:16 +0000 (05:32 +0000)]
adjattrib() feedback (trunk only)

     Fix a bug described in the slash'em bugs page at Sourceforge.  When
attributes are undergoing adjustment (from drinking a potion of gain
ability, for instance), don't display "you feel wise" or "you feel weak"
messages if worn equipment is keeping the relevant attribute at some point
below max or above min and the current value doesn't actually change.
The old logic just checked whether you were at max or min and assumed that
when not, the value would be changing.  Now it checks whether the value
actually did change.  But it doesn't intercept attempts to go over max or
under min at the same point any more; I hope it hasn't introduced any new
bugs in the process.

18 years agoshktalk patch - speech by polymorphed shopkeepers (trunk only)
nethack.rankin [Sun, 21 May 2006 04:22:09 +0000 (04:22 +0000)]
shktalk patch - speech by polymorphed shopkeepers (trunk only)

     Add a patch attached to one of the bug reports sent by <email deleted>
which prevents shopkeepers who have been polymorphed into animals from
speaking.  Some messages are altered so that the player gets informed about
shop interactions without it seeming to be spoken by the shk, other messages
are suppressed outright.  I cleaned it up a bit (mostly formatting, but the
``getcad'' section seemed to have a logic error--using goto to jump into
the middle of an if-then-else is evil...) and implemented a TODO comment he
added (to use mbodypart() when second shopkeeper at end of game shakes his
head; also, skip that phrase if shk is in headless form--futility while
attempting to test this led to discovery of the misplaced parenthesis bug).

18 years agoend of game shopkeeper messages
nethack.rankin [Sun, 21 May 2006 04:00:08 +0000 (04:00 +0000)]
end of game shopkeeper messages

     Fix something I accidentally broke nearly three years ago (post 3.4.2,
so the bug appeared in 3.4.3).  A misplaced closing parenthesis caused an
in-sight check to always fail, so the "<shk> looks at your corpse, shakes
his head, and sighs" message when game ends would never occur.  That
situation is extremely rare anyway; it only happens after some other shk
has taken the hero's possessions.

18 years agoelven boots
nethack.allison [Fri, 19 May 2006 18:35:11 +0000 (18:35 +0000)]
elven boots

<email deleted> wrote:
> While levitating, I put on an unknown pair of boots.  They turned out to be
> elven boots.  I received the message, "You finish your dressing maneuver.  You
> walk very quietly."  Incidentally, I was hallucinating at the time.
>
> It seems to me that levitating individuals shouldn't be able to tell that they
> walk quietly.

18 years agoplayer control of spellbook order (trunk only)
nethack.rankin [Thu, 18 May 2006 04:18:28 +0000 (04:18 +0000)]
player control of spellbook order (trunk only)

     Add the capability of sorting the entire spellbook by various criteria,
augmenting the existing ability to swap pairs of spells.  In the menu that's
put up for the '+' command, add a non-spell entry after the last known spell
        + - [sort spells]
Selecting that brings up a new menu

        View known spells list sorted

        a + by casting letter
        b - alphabetically
        c - by level, low to high
        d - by level, high to low
        e - by skill group, alphabetized within each group
        f - by skill group, low to high level within group
        g - by skill group, high to low level within group
        h - maintain current ordering

        z - reassign casting letters to retain current order

'a' corresponds to the normal ordering; 'b' through 'g' cause the order
to change, but during the current invocation of the '+' command only.
(Entry 'h' is a no-op, something aside from ESC to get out without doing
anything.  'a' is only a no-op if you haven't picked any of 'b' through
'g' yet.)  After making a choice, you're taken back to the '+' command to
view the spells in the requested order.  And once back there, you can pick
'+' again to come back to this menu, where picking 'z' will cause casting
letters to be shuffled such that present display order becomes the actual
spellbook order.  Newly learned spells get appended to the end as usual;
the most recent sorting order isn't sticky even if finished off with 'z'.

     No doubt seeing it in action will be clearer than this description.
This also updates the Guidebook to mention the spell retention field added
to the '+' menu some weeks back.

18 years agoquest artifact handling (trunk only)
nethack.rankin [Thu, 18 May 2006 02:50:33 +0000 (02:50 +0000)]
quest artifact handling (trunk only)

     When the hero receives the quest artifact "got it" message, set the
artifact's dknown bit in case the hero is blinded.  That message describes
the object by name, effectively the same as seeing it up close.  (This
would have prevented the "now wearing an Eyes of the Overworld" grammar bug
for monks but not for non-monks, so the previous fix is still necessary.)

18 years agoEyes of the Overworld grammar
nethack.rankin [Thu, 18 May 2006 02:38:16 +0000 (02:38 +0000)]
Eyes of the Overworld grammar

     Putting on the Eyes while blind causes sight to be regained, which in
turn causes xname() to set the dknown bit and start using the previously
unseen object's name.  But obj_is_pname() was being called before xname in
the "you are now wearing ..." message, while dknown was still clear.  So
obj_is_pname thought the name was being suppressed and returned false,
resulting in "an Eyes" instead of "the Eyes".  Fix is to call xname first.

18 years agogrammar bit
nethack.allison [Wed, 17 May 2006 20:15:46 +0000 (20:15 +0000)]
grammar bit

<Someone> wrote:
> You find an anti-magic field.
> Where do you want to jump?  (For instructions type a ?)
> You pass right over _a_ anti-magic field.

18 years agoadditonal oextra care
nethack.allison [Sat, 13 May 2006 20:19:06 +0000 (20:19 +0000)]
additonal oextra care

Be deliberately careful with copies taken of
oextra pointers and clear the pointer if it
truly is a redundant copy that will become
invalid if/when the original holder is deallocated.

18 years agoadd pickup_thrown option (trunk only)
nethack.rankin [Sat, 13 May 2006 04:57:52 +0000 (04:57 +0000)]
add pickup_thrown option (trunk only)

     This patch by <email deleted> was released
when 3.4.1 was current and has been incorporated into slash'em.  It is
extremely useful while using ranged weapons.  When both autopickup and
pickup_thrown are enabled, walking across previously thrown objects will
pick them up even if they don't match the current pickup_types list.
[See cvs log for patchlevel.h for longer description.]

18 years agoadd pickup_thrown option (trunk only)
nethack.rankin [Sat, 13 May 2006 04:56:16 +0000 (04:56 +0000)]
add pickup_thrown option (trunk only)

     This patch by <email deleted> was released
when 3.4.1 was current and has been incorporated into slash'em.  It is
extremely useful while using ranged weapons.  When both autopickup and
pickup_thrown are enabled, walking across previously thrown objects will
pick them up even if they don't match the current pickup_types list.
(Autopickup exceptions weren't around when the patch was first developed
and while those can be used for this purpose if you're willing to name
every object prior to throwing it, pickup_thrown is much more convenient.
Especially when you run out of weapons and resort to throwing pick-axes,
unicorn horns, and spare suits of banded mail at that floating eye who
rudely refuses to die.)  If you drop a previously thrown object (after
getting it back into your inventory again, of course), its was_thrown bit
will be clear and subsequent walking over it behaves in the regular
autopickup manner.  There's no special stacking handling; if a thrown
object lands on a compatable object and they stack, the combined stack is
subject to pickup_thrown handling.

     The original patch updated makedefs to add an entry for pickup_thrown
patch to the options list displayed by #version; I've left that out.  It
also cleared the was_thrown bit in the pickup code, resulting in being
sticky for boomerangs and Mjollnir (where throwing, catching, and then
dropping those would result in behaving as if they had most recently been
thrown rather than dropped).  I've moved that to the add-to-inventory code
instead to fix this.  The original patch also put the pickup_thrown bit
into iflags instead of flags in order to avoid invalidating save files;
I've moved it to flags where it belongs and added a patchlevel.h update.
I've also reworded the Guidebook entries slightly.  [The original patch
can be obtained from <Someone>'s "NetHack Patch Database" at
http://bilious.homelinux.org/ under the "browse" heading.  I didn't hang
on the exact URL; sorry.]

     I think objects stolen from the hero should have their was_thrown bit
set (or else add a new was_stolen bit, which seems like overkill) so that
recovering stolen objects will become simpler after the thief has been
tracked down and dealt with, but I haven't done that here.

18 years agoxorn comment
nethack.allison [Fri, 12 May 2006 02:27:52 +0000 (02:27 +0000)]
xorn comment

18 years agoDelphi follow-up 2 (trunk only)
nethack.allison [Fri, 12 May 2006 01:59:56 +0000 (01:59 +0000)]
Delphi follow-up 2 (trunk only)

oops, Pat pointed out that I altered the logic.

18 years agofixes typo
nethack.rankin [Fri, 12 May 2006 00:36:13 +0000 (00:36 +0000)]
fixes typo

     Pointed out by <Someone>.

18 years agocandelabrum in shop (trunk only)
nethack.rankin [Fri, 12 May 2006 00:30:32 +0000 (00:30 +0000)]
candelabrum in shop (trunk only)

     The code to have Izchak recognize the Candelabrum of Invocation
instead of just being uninterested in an item not stocked in his shop was
being skipped when the character is hallucinating.  Make it work for any
lighting store (slash'em sometimes has another candle shop, run by a
randomly named shopkeeper), and make it recogize Izchak even when
hallucinating.  Also, have him give a message about the need for 7 candles
if the candelabrum doesn't already have them attached.

18 years agoDelphi follow-up (trunk only)
nethack.allison [Thu, 11 May 2006 21:22:06 +0000 (21:22 +0000)]
Delphi follow-up (trunk only)

18 years agowater vs acid
nethack.rankin [Thu, 11 May 2006 03:26:55 +0000 (03:26 +0000)]
water vs acid

     Fix the bug From a bug report.alt.org server, where killing a monster by closing the
castle drawbridge resulted in a panic after the dead monster's possessions
were dropped into the moat and a potion of acid exploded in the process.
water_damage() deleted the object but had no way to tell flooreffects()
that it was gone, so flooreffects() couldn't tell its own caller not to
place and stack the object.  After that, a chunk of freed memory became
part of the floor objects chain and eventually triggered a panic which
tried to make a save file but whose reason didn't get logged properly.

18 years agoDelphi msg (trunk only)
nethack.allison [Wed, 10 May 2006 23:13:28 +0000 (23:13 +0000)]
Delphi msg (trunk only)

<email deleted> wrote:
> * Angering the Oracle then entering her room still gives
> "Hello, <Dudley>, welcome to Delphi!"

18 years agoselling candelabrum in lighting store
nethack.allison [Wed, 10 May 2006 03:31:53 +0000 (03:31 +0000)]
selling candelabrum in lighting store

<email deleted> wrote:
> * You can't sell a candelabrum (with candles attached) to a lighting store.

You still can't sell the candelabrum after this, but acknowledge
the situation by having Izchak say something unique.

18 years agoset_corpsenm()
nethack.allison [Tue, 9 May 2006 23:10:22 +0000 (23:10 +0000)]
set_corpsenm()

Provide a common routine that always does the right
thing with respect to timers and weight when altering
obj->corpsenm, and use it throughout the code.

18 years ago#H85: create_object() bugs
nethack.allison [Tue, 9 May 2006 01:31:55 +0000 (01:31 +0000)]
#H85: create_object() bugs

From a bug report.c was first creating  a corpse
complete with revive timer if it was a troll, or without
a timer if it was a lizard or lichen corpse. Then it might
change the corpse type, leaving strange corpse
types that revived, or that lasted forever.

18 years agodungeon open failure
nethack.allison [Sun, 7 May 2006 14:32:04 +0000 (14:32 +0000)]
dungeon open failure

We've been getting numerous complaints from people
about "dungeon failure", often related to attempts
to start NetHack from within various zip utilities
that present a folder-like view.

The dungeon failure was actually misleading. The
real problem was a dlb file open failure, but the
return value of dlb_init() was not being checked
in pcmain.

This moves the dlb_init earlier in the startup,
checks for failure, and provides some feedback
around the common zip utility problem for win32.

18 years agomore rumors processing (trunk only)
nethack.rankin [Sun, 7 May 2006 05:31:27 +0000 (05:31 +0000)]
more rumors processing (trunk only)

     This fix should work for both DLB and non-DLB without forcing binary
mode for the latter.  And it should continue to work even if we later
decide to force that mode (which I think we should do...).  Use actual
file positions to calculate the size of the true and false sections,
rather than counting the bytes of each rumor (that counting has been left
in place but it gets overridden now.)  Those two sizes will be bigger on
platforms which use CR+LF line ends and maintain dat/rumors as non-DLB
text file.  But due to the way that nethack uses the sizes, such size
differences don't matter.

     The branch variant shouldn't need any corresponding fix.  It uses
the counting method when the output is binary, where the accumulated
value is accurate, and the check end-of-file shortcut when using text,
which should not be affected by stdio converting CR+LF into \n for text
input and back to CR+LF again for text output.  (The original bug was due
to starting out with the EOF shortcut when input had CR+LF line ends, but
then writing less data due to binary output keeping just LF instead of
putting CR back.)

18 years agowin32 Makefile updates
nethack.allison [Sat, 6 May 2006 19:13:35 +0000 (19:13 +0000)]
win32 Makefile updates

- DLB wasn't defined during util builds, including makedefs.
- spotless wasn't spotless

18 years agorumor consumption during level creation
nethack.rankin [Sat, 6 May 2006 05:08:27 +0000 (05:08 +0000)]
rumor consumption during level creation

     I've forgotten who pointed this out recently, but the hero was having
wisdom exercized (if true rumor chosen) or abused (for false one) whenever
level creation made a random floor engraving which used a rumor for its text.

18 years agofixes entry for rumors fix
nethack.rankin [Sat, 6 May 2006 04:57:10 +0000 (04:57 +0000)]
fixes entry for rumors fix

18 years agomore thorough rumor processing (trunk only)
nethack.rankin [Sat, 6 May 2006 04:55:57 +0000 (04:55 +0000)]
more thorough rumor processing (trunk only)

     To fix the gibberish rumor observed by at least a couple of players on
Windows (where if rumors.tru had <cr><lf> line ends and DLB was defined,
makedefs built a file that caused nethack to end up in the wrong place when
it reached EOF and tried to jump back to the first false rumor), change
the way that makedefs builds the rumors file.  It now will collect more
information about the true and false rumors.  Instead of one hex value on
the second line, there are nine values (three groups of three).

1,2,3;4,5,6;7,8,9

1 = number of true rumors; not previously collected and not currently used
2 = size in bytes for all true rumors (in decimal, as is #1)
3 = offset to first true rumor (in hexadecimal; not previously collected)
4,5,6 = same as 1,2,3 but for the false rumors section
7,8 = always 0 (imaginary third section has no entries, no size)
9 = offset to end-of-file (could be used for sanity checks; currently isn't)

Adding #2 with #3 yields #6; adding #5 with #6 yields #9.  The old format's
lone entry was the same as the new format's #6.  #2, #3, and #5 are values
which nethack was previously calculating on the fly after opening the file.

     This also extends rumor_check() a little bit (displays the last rumor
for both sections in addition to the first), but I think it can probably
now be demoted to ``#if 0'' and removed from the extended commands list.

18 years agoThe last straightforward additions.
jwalz [Thu, 4 May 2006 22:15:37 +0000 (22:15 +0000)]
The last straightforward additions.

Now I have to figure out which of the shifts from here to there we
want from the <email deleted> submissions.

18 years agoAnd another handful of submitted entries.
jwalz [Wed, 3 May 2006 23:01:02 +0000 (23:01 +0000)]
And another handful of submitted entries.

18 years agowork around win32 rumor issues (#H80)
nethack.allison [Tue, 2 May 2006 22:10:54 +0000 (22:10 +0000)]
work around win32 rumor issues (#H80)

With makedefs changed to open the files as binary, the
rumors generation and retrieval seems to work consistently.

win32tty
T start=000067 (000043), end=020658 (0050b2), size=020591 (00506f)
F start=020658 (0050b2), end=043641 (00aa79), size=022983 (0059c7)
T 000067 A blindfold can be very useful if you're telepathic.
F 020658 "So when I die, the first thing I will see in heaven is a score list?"

win32gui
T start=000067 (000043), end=020658 (0050b2), size=020591 (00506f)
F start=020658 (0050b2), end=043641 (00aa79), size=022983 (0059c7)
T 000067 A blindfold can be very useful if you're telepathic.
F 020658 "So when I die, the first thing I will see in heaven is a score list?"

18 years agowizrumorcheck update for trunk
nethack.allison [Tue, 2 May 2006 12:50:09 +0000 (12:50 +0000)]
wizrumorcheck update for trunk

18 years agodebug mode #wizrumorcheck
nethack.allison [Mon, 1 May 2006 01:49:18 +0000 (01:49 +0000)]
debug mode #wizrumorcheck

Provide a command to easily verify that the rumor true/false
boundary offsets are correct for the rumors file.
If the boundary is pointing mid-line, the rumor at the boundary
won't decrypt properly.

18 years agoguidebook autopickup_exceptions
nethack.allison [Sun, 30 Apr 2006 17:55:09 +0000 (17:55 +0000)]
guidebook autopickup_exceptions

autopickup_exceptions is no longer in the experimental section of config.h

18 years agoYet more of the <email deleted> entries.
jwalz [Sat, 29 Apr 2006 23:13:18 +0000 (23:13 +0000)]
Yet more of the <email deleted> entries.

18 years agoAnd another batch from <email deleted>
jwalz [Fri, 28 Apr 2006 22:28:48 +0000 (22:28 +0000)]
And another batch from <email deleted>

18 years agoThe next few from <email deleted>
jwalz [Thu, 27 Apr 2006 22:35:41 +0000 (22:35 +0000)]
The next few from <email deleted>

18 years agoThe next <email deleted> batch.
jwalz [Wed, 26 Apr 2006 23:02:25 +0000 (23:02 +0000)]
The next <email deleted> batch.

18 years agoAnother batch from <email deleted>
jwalz [Tue, 25 Apr 2006 20:46:31 +0000 (20:46 +0000)]
Another batch from <email deleted>

And some space removal after I noticed some on incoming entries.

18 years agogcc compilation warning bits
cohrs [Tue, 25 Apr 2006 04:08:22 +0000 (04:08 +0000)]
gcc compilation warning bits
some rather complex boolean operations needed more parentheses to avoid
warnings.  I think I put them in the right places.
A couple other items: naked assignments in if stmts, and an extra function decl

18 years agofix W343-1 open win32 bug from known bugs page
nethack.allison [Tue, 25 Apr 2006 01:16:54 +0000 (01:16 +0000)]
fix W343-1 open win32 bug from known bugs page

W343-1 Redirecting score output through a pipe doesn't work.

18 years agoNext batch from <email deleted>
jwalz [Mon, 24 Apr 2006 20:00:11 +0000 (20:00 +0000)]
Next batch from <email deleted>

18 years agoFirst batch from <email deleted>
jwalz [Sun, 23 Apr 2006 18:51:39 +0000 (18:51 +0000)]
First batch from <email deleted>

18 years agoUpdate dungeoneers for data.base entries.
jwalz [Sun, 23 Apr 2006 17:22:46 +0000 (17:22 +0000)]
Update dungeoneers for data.base entries.

18 years agodigging land mines sequel (trunk only)
nethack.rankin [Sat, 22 Apr 2006 04:39:17 +0000 (04:39 +0000)]
digging land mines sequel (trunk only)

     Axes can't dig through the floor, but attempting to dig down with one
shouldn't just "scratch the floor" if there is an armed land mine present.
Have it set off a land mine or bear trap, in addition to the possibility
of chopping your way out of being stuck in a bear trap (a recent change).

18 years agodungeon overview build fix
nethack.rankin [Sat, 22 Apr 2006 04:22:08 +0000 (04:22 +0000)]
dungeon overview build fix

18 years agoexperimental - dungeon overview (trunk only)
nethack.allison [Thu, 20 Apr 2006 00:57:45 +0000 (00:57 +0000)]
experimental - dungeon overview (trunk only)

Add Hojita Discordia's Dungeon Map overview as
conditional code for experimentation and testing.
Everything is guarded by
#ifdef DUNGEON_OVERVIEW
#endif

The notes that accompanied the original patch follow.

Dungeon Map Overview Patch for Nethack 3.4.3
Version 3
=============================================================================
Changelist:
    v3: Changed #level to #annotate to avoid #levelchange collision.  Fixed
        handling of elemental planes and astral plane (oops).  Changed
formatting to be slightly closer to print_dungeon()'s.  Should be
"final" version for 3.4.3.
    v2: Added tracking of trees.  Changed ctrl-m command to ctrl-o.  Portals
        displayed as "sealed" instead of "closed".
    v1: First release.
    (Note: all versions are mutually save compatible.)
=============================================================================
This patch creates a dungeon map overview that is recorded as the player
explores the dungeon.  I was tired of returning to a game a few days later
and having no idea what the dungeon looked like.  Trying to name pieces
of armor with shorthand didn't work so well as an intermediate solution
either, especially around nymphs.

It can be assumed that this map is in the mind of the hero and thus
can't be stolen, can be read when blind, or when buried, or when the hero
doesn't have any hands, or eyes, or hands free, or...etc. On the other hand,
this implies that the hero doesn't remember all of the details ("a fountain",
"some fountains", "many fountains") and that the map is subject to amnesia
when applicable.

This overview tracks fountains, altars, stores, temples, sinks, thrones,
trees, and dungeon branches.  It attempts to not spoil the player nor
reveal more information than the hero knows.  For this reason, it only
tracks dungeon features found in the guidebook and dungeon branches.

This patch breaks save file compatibility.  Sorry.

Added commands
=============================================================================
#overview (ctrl-o, if not in wizard mode) - displays overview
#annotate (ctrl-n, if using numpad) - names current level

Example Output From #overview
=============================================================================
The Dungeons of Doom: levels 1 to level 15
   Level 1:
      A fountain
   Level 3: (My stash.)
      An altar, some fountains
      Stairs down to The Gnomish Mines
   Level 7:
      Many fountains
   Level 8:
      Stairs up to Sokoban, level 7
   Level 15:
      A general store
      Sealed portal to The Quest
The Gnomish Mines: levels 4 to level 7
   Level 7: <- You are here
      Many stores, some fountains, a temple

More Details
=============================================================================
The overview shows only levels that have anything interesting to display and
doesn't show branches that don't have any interesting levels.

To avoid the map revealing more information than the hero knows, the overview
only displays things that the hero has seen or touched.  (If the hero
blinds herself, levitates above a known fountain, and obliterates it with a
wand of digging, the overview will still say that there is a fountain.)

This is done, sadly, by adding 6 bits to the rm struct to track the last
known dungeon type.  On the other hand, this change could potentially allow
a window port to do something like drawing an item and a fountain on the same
square.

Things That Could Be Better And Maybe Some Feedback Would Help
=============================================================================
"<- You Are Here" is pretty goofy
    -...but an indicator of some sort is nice.
=============================================================================
Many thanks to all the kind folks on r.g.r.n. who had very good feedback
about this patch, in particular L (for the trees), <Someone> Papaganou (for the
#annotate suggestion and some formatting feedback), and <Someone> (for the suggestion
of just overriding ctrl-o instead of using the very broken ctrl-m.)
=============================================================================
20060311. Hojita Discordia. (My usenet email is bogus. Sorry.)

18 years agocomment bit (trunk only)
nethack.allison [Thu, 20 Apr 2006 00:50:37 +0000 (00:50 +0000)]
comment bit (trunk only)

18 years agoStarting with a formatting sweep, including adding Pat's [] breaks.
jwalz [Wed, 19 Apr 2006 22:20:54 +0000 (22:20 +0000)]
Starting with a formatting sweep, including adding Pat's [] breaks.

18 years agofix #H79 - steed disintegration
nethack.rankin [Tue, 18 Apr 2006 05:26:00 +0000 (05:26 +0000)]
fix #H79 - steed disintegration

     From a bug report, a steed hit by disintegration
breath survived via life-saving, but the program was confused about whether
the hero could still ride and issued some impossible warnings.  The code
to disintegrate a monster's inventory didn't bother to unwear worn items as
it destroyed them, presumeably assuming that the monster was sure to die,
so steed was left with a flag bit set claiming it was saddled even though
the saddle was gone.  This fixes that, and the rider will end up being
dismounted as the saddle gets destroyed, regardless of whether the steed
ultimately survives.  [Since the steed is still present at the time of
dismounting, the hero will get bumped to some other location, possibly to
the next spot about to be hit by the same black dragon breath attack which
just vaporized the steed.  That's suboptimal, to put it mildly....]

     I couldn't test the circumstances of the original report.  Post-3.4.3,
ki-rin has been marked no-hands and is no longer capable of wearing armor
or amulets.  I looked to see whether any other potential steed could wear
an amulet of life-saving and couldn't find one.  But the original bug also
applied to conferred properties of special armor worn by non-steed monsters
too, so the fix was needed anyway.

     The branch and trunk patches are different.  For the trunk, I moved a
big chunk of code out of buzz() into a seperate routine.  That actual fix
is the same in both variants.

18 years agomore munstone fixes
nethack.rankin [Tue, 18 Apr 2006 03:41:05 +0000 (03:41 +0000)]
more munstone fixes

      Move part of the recent "munstone fixes" patch to the branch code
since one of those fixes prevents accessing freed memory.  The part that
lets monsters eat tins of lizard meat or tins of acidic monsters in order
to get the same benefit as the corresponding corpse has been left out.

18 years agoanother safe_oname() bit (trunk only)
nethack.allison [Sat, 15 Apr 2006 15:49:00 +0000 (15:49 +0000)]
another safe_oname() bit (trunk only)

18 years agosafe_oname (trunk only)
nethack.allison [Sat, 15 Apr 2006 15:40:27 +0000 (15:40 +0000)]
safe_oname (trunk only)

There were routines that were passed the
object name as an argument.  Before the oextra
patch, ONAME() always returned a valid pointer
to a location within the obj struct. The oextra
patch worked around those cases by
using a temporary variable that was either set
to ONAME (if the obj passed the has_oname() test),
or to ""  (pointer to an empty string) if no name was
present.

Since that might be a common thing to do, provide
the safe_oname() routine that you can use as a
function parameter without having to worry about
about whether ONAME(obj) is valid, and without
the need for the temporary variable.

18 years agoincrement editlevel
nethack.allison [Sat, 15 Apr 2006 13:40:11 +0000 (13:40 +0000)]
increment editlevel

That last merge update should have included this.

18 years agooextra follow-up - merging (trunk only)
nethack.allison [Sat, 15 Apr 2006 13:37:58 +0000 (13:37 +0000)]
oextra follow-up - merging (trunk only)

It seemed inappropriate to allocate and tack on an oextra
structure just to mark it as unmergable, and the oextra
struct itself wouldn't be released until a save/restore took
place.

This uses one of the freed up oattached bits to prevent the merge.

18 years agooextra obj.h follow-up (trunk only)
nethack.allison [Sat, 15 Apr 2006 13:09:57 +0000 (13:09 +0000)]
oextra obj.h follow-up (trunk only)

Just add some notes to obj.h around oextra.

18 years agoomailcmd (trunk only)
nethack.rankin [Sat, 15 Apr 2006 02:14:36 +0000 (02:14 +0000)]
omailcmd (trunk only)

     The revised newmail() wouldn't compile (Strncpy doesn't exist, `buf'
was an array of pointers rather than of char).  Simplify it substantially,
and adjust the one caller (vms) that relied on the old convoluted bit.

18 years agodrum of earthquake follow-up
nethack.allison [Fri, 14 Apr 2006 17:01:18 +0000 (17:01 +0000)]
drum of earthquake follow-up