more cursed potion of invisibility

Give feedback if a visible monster drinks a potion of invisibility
that happens to be cursed so monster fails to become invisible, or if
hero hits a visible monster with a cursed potion of invisibility and
it fails to become invisible.
This commit is contained in:
PatR
2026-02-16 19:51:04 -08:00
parent b702be4449
commit 0d2752d05d
2 changed files with 10 additions and 0 deletions

View File

@@ -2439,6 +2439,13 @@ use_misc(struct monst *mtmp)
} }
if (oseen) if (oseen)
makeknown(otmp->otyp); makeknown(otmp->otyp);
} else if (vismon && !mtmp->minvis) {
/* cursed potion; mon tried to make itself invisible but failed */
pline("%s briefly seems to be transparent.", Monnam(mtmp));
/* we could call map_invisible() before the pline(), then
newsym() after; unseen monster glyph would be visible during
the pline, but hero would forget any remembered object under
the monster */
} else if (!vismon && canseemon(mtmp)) { } else if (!vismon && canseemon(mtmp)) {
/* cursed potion; this won't happen because a monster will only /* cursed potion; this won't happen because a monster will only
drink a potion of invisibility when not already invisible */ drink a potion of invisibility when not already invisible */

View File

@@ -1785,6 +1785,9 @@ potionhit(struct monst *mon, struct obj *obj, int how)
if (sawit && !canspotmon(mon)) { if (sawit && !canspotmon(mon)) {
if (cansee(mon->mx, mon->my)) if (cansee(mon->mx, mon->my))
map_invisible(mon->mx, mon->my); map_invisible(mon->mx, mon->my);
} else if (sawit && cursed_potion) {
pline("%s briefly seems to be transparent.", Monnam(mon));
/* see use_misc(muse.c) for comment about map_invisible() */
} else if (!sawit && canspotmon(mon)) { } else if (!sawit && canspotmon(mon)) {
/* if an invisible mon glyph was present, mon_set_minvis()'s /* if an invisible mon glyph was present, mon_set_minvis()'s
newsym() has gotten rid of it */ newsym() has gotten rid of it */