]> granicus.if.org Git - nethack/commitdiff
level teleport and sleeping steed
authorcohrs <cohrs>
Fri, 15 Nov 2002 04:58:28 +0000 (04:58 +0000)
committercohrs <cohrs>
Fri, 15 Nov 2002 04:58:28 +0000 (04:58 +0000)
If you level teleported while on a sleeping steed, a panic and possibly a
crash would occur.  I believe the same would occur by digging a hole.  This
was due to keepdogs avoiding keeping sleeping pets.  In these cases, it
seems there's no reason for the sleeping steed to _not_ accompany you.
Since other ways of changing level (eg stairs) don't allow this, just added
a check to keepdogs to allow the steed to go with you.

doc/fixes34.1
src/dog.c

index f8d844fcf0b2bdb1cd5e585cf759e88d7fcb5e23..1574b4a27e01f69efa5ee826a28d15aa32216cfa 100644 (file)
@@ -304,6 +304,7 @@ salamanders have no legs and cannot ride
 all objects carried by a monster who's hit by a polymorph zap are protected
        from that zap, not just worn armor which falls off due to shape change
 sparkle option for display effects was ignored on explosions
+level teleport while on a sleeping steed caused panic and possible crash
 
 
 Platform- and/or Interface-Specific Fixes
index 03374e806236a8e2b308996f39d604ef6ee5232e..09b06be1e9ad6d2c9e85234b083a2a19a48bfbb4 100644 (file)
--- a/src/dog.c
+++ b/src/dog.c
@@ -465,7 +465,13 @@ boolean pets_only; /* true for ascension or final escape */
                   the amulet; if you don't have it, will chase you
                   only if in range. -3. */
                        (u.uhave.amulet && mtmp->iswiz))
-               && !mtmp->msleeping && mtmp->mcanmove
+               && ((!mtmp->msleeping && mtmp->mcanmove)
+#ifdef STEED
+                   /* eg if level teleport or new trap, steed has no control
+                      to avoid following */
+                   || (mtmp == u.usteed)
+#endif
+                   )
                /* monster won't follow if it hasn't noticed you yet */
                && !(mtmp->mstrategy & STRAT_WAITFORU)) {
                stay_behind = FALSE;