[rec.games.hack] NetHack permonst save bug

creps@silver.bacs.indiana.edu (Steve Creps) (12/31/87)

   Earlier I mentioned a bug with not getting a ghost in a bones level.
It seems the problem is much more than that: some permonst monsters are
not being saved properly at all. I did some testing of the problem. I
used debug wizard mode, with the environment variable SHOPTYPE set to
various things in order to get the monsters causing the problem. First
I tried "M" to get morgues. Everything looked fine. I got to the morgue,
and it was full of ghosts (I had genocided Z's and W's to get them out of
the way, but I'm absolutely sure that is unrelated to the problem). I then
saved the game. Upon restoring the game, I found that all the ghosts had
been turned into little dogs (I was getting a little dog instead of the
ghost in a bones level earlier).
   Next I tried it with SHOPTYPE set to "3" to get barracks(tm), full of
soldiers. (This is a new monster to be released in 2.3). When I restored
after saving this time, all the soldiers (at least 20 of them) had just
disappeared.
   Finally I tried "S" for swamps and giant eels. I isolated an eel in the
corner where I could see him, and saved. When I restored the eel was now
a gnome.
   What do soldiers, ghosts, and eels have in common? They are all defined
with their own variables of type permonst, whereas most other monsters are
kept in an array.
   I'm still working on this one. I also remember the medusa not restoring
either, and it's also defined like these monsters. Another thing, I found
a monster after one of the restores that looked like an "e" with an umlaut
over it. Its name was garbage, mostly, but included the system message
"Internal stack error: system halted." (My system didn't actually halt;
it just read this from a part of memory it shouldn't have.) I don't know
what this monster had been before, though. I'd guess it was a giant rat,
since it was the right level for one, and rats are defined outside of the
monster array (if ROCKMOLES is defined).
   This bug is in the PC version. I just tried it on this Ultrix
machine, and did not get the bug. Then I applied the patches from all
changes I've made to my PC version, and still did not get the error.
This shows two things: 1) it's not a bug I've introduced myself.
2) it's something machine-dependent causing the problem, such as possibly
different word sizes.
   If anyone has any ideas, please let me know.

-	-	-	-	-	-	-	-	-
Steve Creps on the VAX 8650 running Ultrix 2.0-1 at Indiana University.
	creps@silver.bacs.indiana.edu
"F-14 Tomcat! There IS no substitute."