]> granicus.if.org Git - nethack/commitdiff
gaze attacks while on a scroll of scare monster
authorcohrs <cohrs>
Wed, 16 Jan 2002 07:56:46 +0000 (07:56 +0000)
committercohrs <cohrs>
Wed, 16 Jan 2002 07:56:46 +0000 (07:56 +0000)
Reported to the list 1/5/2001 by <Someone>.
I put stop_occupation calls in all the gaze cases where they were needed.
You might still die, but you'll only get attacked once before you stop waiting.

doc/fixes33.2
src/mhitu.c

index 009884d6605a9d480e670f3fb75e8779e7d20ecb..ae2eb08c2da524592e48cef8d3eb1ea4a7c54abf 100644 (file)
@@ -386,6 +386,7 @@ monsters casting spells at your displaced image now set mspec_used
 monsters without ranged spells don't print curse messages for ranged spells
 going down to floor using > should set Heart of Ahriman invocation timeout
 riding a steed into water kills the steed if it cannot swim, with penalties
+gaze attacks now stop occupation
 
 
 Platform- and/or Interface-Specific Fixes
index 98b90409c42be295123e181a6cb6223a9e3eab74..001e9dff928bf3bfe4609bf17c740e8dcb568078 100644 (file)
@@ -1783,6 +1783,7 @@ gazemu(mtmp, mattk)       /* monster gazes at you */
                if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) &&
                    !Stone_resistance) {
                    You("meet %s gaze.", s_suffix(mon_nam(mtmp)));
+                   stop_occupation();
                    if(poly_when_stoned(youmonst.data) && polymon(PM_STONE_GOLEM))
                        break;
                    You("turn to stone...");
@@ -1804,6 +1805,7 @@ gazemu(mtmp, mattk)       /* monster gazes at you */
                    else
                        You("are getting more and more confused.");
                    make_confused(HConfusion + conf, FALSE);
+                   stop_occupation();
                }
                break;
            case AD_STUN:
@@ -1815,15 +1817,18 @@ gazemu(mtmp, mattk)     /* monster gazes at you */
                    mtmp->mspec_used = mtmp->mspec_used + (stun + rn2(6));
                    make_stunned(HStun + stun, TRUE);
                    pline("%s stares piercingly at you!", Monnam(mtmp));
+                   stop_occupation();
                }
                break;
            case AD_BLND:
                if (!mtmp->mcan && canseemon(mtmp) && !resists_blnd(&youmonst)
                        && distu(mtmp->mx,mtmp->my) <= BOLT_LIM*BOLT_LIM) {
                    int blnd = d((int)mattk->damn, (int)mattk->damd);
+
                    You("are blinded by %s radiance!",
                                      s_suffix(mon_nam(mtmp)));
                    make_blinded((long)blnd,FALSE);
+                   stop_occupation();
                    /* not blind at this point implies you're wearing
                       the Eyes of the Overworld; make them block this
                       particular stun attack too */
@@ -1836,7 +1841,9 @@ gazemu(mtmp, mattk)       /* monster gazes at you */
                        couldsee(mtmp->mx, mtmp->my) &&
                        mtmp->mcansee && !mtmp->mspec_used && rn2(5)) {
                    int dmg = d(2,6);
+
                    pline("%s attacks you with a fiery gaze!", Monnam(mtmp));
+                   stop_occupation();
                    if (Fire_resistance) {
                        pline_The("fire doesn't feel hot!");
                        dmg = 0;
@@ -1856,6 +1863,7 @@ gazemu(mtmp, mattk)       /* monster gazes at you */
                if(!mtmp->mcan && canseemon(mtmp) &&
                   couldsee(mtmp->mx, mtmp->my) && mtmp->mcansee &&
                   multi >= 0 && !rn2(5) && !Sleep_resistance) {
+
                    fall_asleep(-rnd(10), TRUE);
                    pline("%s gaze makes you very sleepy...",
                          s_suffix(Monnam(mtmp)));
@@ -1865,7 +1873,9 @@ gazemu(mtmp, mattk)       /* monster gazes at you */
                if(!mtmp->mcan && canseemon(mtmp) && mtmp->mcansee &&
                   (HFast & (INTRINSIC|TIMEOUT)) &&
                   !defends(AD_SLOW, uwep) && !rn2(4))
+
                    u_slow_down();
+                   stop_occupation();
                break;
 #endif
            default: impossible("Gaze attack %d?", mattk->adtyp);