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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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())))
|
||||
|
||||
Reference in New Issue
Block a user