Fix: undoing monsters' permablindness by accident

Monsters can become permanently blind (in very narrow circumstances -- I
think limited only to a very short-range camera flash), in which case
they have both mon->mblinded and mon->mcansee set to 0.  Such
permanently blinded monsters can counterintuitively regain their sight
by being blinded a second time from a different source: for example, by
being hit with a cream pie.  That second blinding will increase
mon->mblinded (which functions as a blindness timeout) by some amount,
and when it runs out the monster will regain its sight.  Try to make
sure that doesn't happen by skipping any blinding attacks if the monster
has already been permanently blinded.
This commit is contained in:
Michael Meyer
2023-08-29 16:19:06 -04:00
committed by PatR
parent 0178886990
commit 9d7378ec57
3 changed files with 7 additions and 1 deletions

View File

@@ -248,6 +248,8 @@ struct monst {
#define engulfing_u(mon) (u.uswallow && (u.ustuck == (mon)))
#define helpless(mon) ((mon)->msleeping || !(mon)->mcanmove)
#define mon_perma_blind(mon) (!mon->mcansee && !mon->mblinded)
#define mon_offmap(mon) (((mon)->mstate & (MON_DETACH|MON_MIGRATING|MON_LIMBO|MON_OFFMAP)) != 0)
/* Get the maximum difficulty monsters that can currently be generated,