From 268b70e4e38bc2c6815467f97886750a5628e50d Mon Sep 17 00:00:00 2001 From: cohrs Date: Sat, 6 Apr 2002 17:24:15 +0000 Subject: [PATCH] R759 - delayed were change could cause crash moveloop() sets a flag when a were/poly change should occur, but it delays this change if the hero is Unchanging or cannot be interrupted (e.g. praying). However, by the time the change can be applied, the reason may no longer be valid. Reset the change indicator when this is the case. Avoids possible strange polymorphs and were crashes. --- doc/fixes34.1 | 1 + src/allmain.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/doc/fixes34.1 b/doc/fixes34.1 index be8233145..07a8110d2 100644 --- a/doc/fixes34.1 +++ b/doc/fixes34.1 @@ -53,6 +53,7 @@ avoid temporary disappearing Burdened message due to updating status line don't credit player's wisdom when makelevel creates random Elbereth engravings reduce insect/monster creation from monster spells avoid "couldn't place lregion type 5" warning when arriving at Plane of Fire +avoid crash due to delayed poly or were change no longer being valid Platform- and/or Interface-Specific Fixes diff --git a/src/allmain.c b/src/allmain.c index 13c71c6d9..63e1c42b5 100644 --- a/src/allmain.c +++ b/src/allmain.c @@ -233,6 +233,10 @@ moveloop() } #endif } + /* delayed change may not be valid anymore */ + if ((change == 1 && !Polymorph) || + (change == 2 && u.ulycn == NON_PM)) + change = 0; if(Polymorph && !rn2(100)) change = 1; else if (u.ulycn >= LOW_PM && !rn2(80 - (20 * night())))