wizard mode ^V crash in endgame
Mentioned in passing in the newsgroup: level teleporting in the
endgame--which is only possible in wizard mode--can crash if you're
confused. The change to make confusion sometimes override teleport
control means that sometimes a random destination will be chosen, and
the routine to choose a random level can call rn2() with a value less
than 1 in the endgame, possibly resulting in attempt to divide by 0.
There's something fishy about the min_/max_depth stuff for the
endgame, but I haven't attempted to figure that out. This just makes
the random destination always be the current level when in the endgame
so that the problem can't come up.
This commit is contained in:
@@ -4,6 +4,8 @@ General Fixes and Modified Features
|
||||
-----------------------------------
|
||||
fix "You hear The food ration tumbles downwards" for blinded pit dropping
|
||||
silver arrows weren't causing silver damage on some silver-haters when wielded
|
||||
wizard mode: avoid division by 0 crash for level teleport in the endgame if
|
||||
confusion overrides teleport control
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)teleport.c 3.4 2003/12/01 */
|
||||
/* SCCS Id: @(#)teleport.c 3.4 2003/12/12 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1222,7 +1222,8 @@ random_teleport_level()
|
||||
int nlev, max_depth, min_depth,
|
||||
cur_depth = (int)depth(&u.uz);
|
||||
|
||||
if (!rn2(5) || Is_knox(&u.uz))
|
||||
/* [the endgame case can only occur in wizard mode] */
|
||||
if (!rn2(5) || Is_knox(&u.uz) || In_endgame(&u.uz))
|
||||
return cur_depth;
|
||||
|
||||
/* What I really want to do is as follows:
|
||||
|
||||
Reference in New Issue
Block a user