Newsgroups: rec.games.int-fiction
Path: gmd.de!Germany.EU.net!EU.net!howland.reston.ans.net!europa.eng.gtefsd.com!uunet!world!ADLLib
From: ADLLib@world.std.com (ADL HealthIndustries)
Subject: Bug in Dungeon v 3.0
Message-ID: <CJow8H.88r@world.std.com>
Organization: The World Public Access UNIX, Brookline, MA
X-Newsreader: TIN [version 1.2 PL2]
Date: Sat, 15 Jan 1994 21:12:16 GMT
Lines: 36

I am virtually sure that I have found a true bug in the new 3.0 version of
Dungeon, which was recently ported to the 80386.  The manifestation of the
bug is the unsolvability of the "resurrection" puzzle. Following player
death, the player is severely restricted in actions, being unable even to
ask for the current score.  A "certain action" (clear to anyone who has
solved the puzzle) results in "resurrection", with an appropriate text
message.  However, the player is still dead: this is confirmed by both the
DIAGNOSE verb ("You are dead") and the player's inability to pick up
objects, etc. However, the player is now sensitive to absence of light,
and entering a dark room will result in a second death (via grue) and game
termination.  The source of the bug is apparent after inspection of the
code.  Player death is handled by the function JIGSUP, located in
SUBR.FOR.  It sets the logical flag DEADF to .TRUE. and sets
AACTIO(PLAYER) to PLAYER. The parameter PLAYER=1, so this sets
AACTIO(1)=1.  The resurrection is handled in TIMEFNC.FOR by the function
AAPPLI, which when called with argument 1 handles all special functions of
dead players. The code following line 1550 of AAPPLI makes all the
necessary changes following a successful ressurection, e.g. resetting the
flag DEADF to .FALSE. However, the bug located here is the line
	 OACTIO(PLAYER)=0 This resets the wrong function, since OACTIO
deals with objects. If this line is changed to
	 AACTIO(PLAYER)=0 then the player should be correctly resurrected
and recognized as alive. 

If there is a "maintenance release" of dungeon3.zip, I hope this bug can
be fixed. I am also curious whether the DECUS release has fixed the bug.
I would think that it is so fundamental that an update from DECUS would have
already patched it.
Larry Brenkus
ADLLib@world.std.com
 
 
 
 
 

