]> granicus.if.org Git - nethack/commitdiff
mirrors
authorarromdee <arromdee>
Mon, 11 Feb 2002 00:42:44 +0000 (00:42 +0000)
committerarromdee <arromdee>
Mon, 11 Feb 2002 00:42:44 +0000 (00:42 +0000)
Invisibility should be treated consistently regarding passive reflection of
gaze attacks and explicit mirror use against gaze attacks.

doc/fixes34.0
src/apply.c

index 66d3c9e5cc144dbcf45afbe9fb3221db5483f40b..2a3ee6be3ce25b7d45b9d18920e417f7de8a3304 100644 (file)
@@ -429,6 +429,7 @@ avoid giving odd "the bat is moving faster" when seeing a bat created
        in gehennom and inaccurate "the monster is moving slower" when
        a monster puts on speed boots.
 gold detection "materially poor" message inappropriate if you have hidden_gold()
+cannot reflect back an invisible umber hulk or medusa's attack
 
 
 
index 848660942cdab6c0bb3951a596fbeb12701b66c2..15afdb659015a54838c274b918a253d23f0579c8 100644 (file)
@@ -683,7 +683,8 @@ struct obj *obj;
        } else if (mlet == S_VAMPIRE || mlet == S_GHOST) {
            if (vis)
                pline ("%s doesn't have a reflection.", Monnam(mtmp));
-       } else if(!mtmp->mcan && mtmp->data == &mons[PM_MEDUSA]) {
+       } else if(!mtmp->mcan && !mtmp->minvis &&
+                                       mtmp->data == &mons[PM_MEDUSA]) {
                if (mon_reflects(mtmp, "The gaze is reflected away by %s %s!"))
                        return 1;
                if (vis)
@@ -694,9 +695,6 @@ struct obj *obj;
                                        mtmp->data == &mons[PM_FLOATING_EYE]) {
                int tmp = d((int)mtmp->m_lev, (int)mtmp->data->mattk[0].damd);
                if (!rn2(4)) tmp = 120;
-       /* Note: floating eyes cannot use their abilities while invisible,
-        * but Medusa and umber hulks can.
-        */
                if (vis)
                        pline("%s is frozen by its reflection.", Monnam(mtmp));
                else You_hear("%s stop moving.",something);
@@ -704,7 +702,8 @@ struct obj *obj;
                if ( (int) mtmp->mfrozen + tmp > 127)
                        mtmp->mfrozen = 127;
                else mtmp->mfrozen += tmp;
-       } else if(!mtmp->mcan && mtmp->data == &mons[PM_UMBER_HULK]) {
+       } else if(!mtmp->mcan && !mtmp->minvis &&
+                                       mtmp->data == &mons[PM_UMBER_HULK]) {
                if (vis)
                        pline ("%s confuses itself!", Monnam(mtmp));
                mtmp->mconf = 1;