gaze attacks while on a scroll of scare monster
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.
This commit is contained in:
@@ -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
|
monsters without ranged spells don't print curse messages for ranged spells
|
||||||
going down to floor using > should set Heart of Ahriman invocation timeout
|
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
|
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
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
10
src/mhitu.c
10
src/mhitu.c
@@ -1783,6 +1783,7 @@ gazemu(mtmp, mattk) /* monster gazes at you */
|
|||||||
if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) &&
|
if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) &&
|
||||||
!Stone_resistance) {
|
!Stone_resistance) {
|
||||||
You("meet %s gaze.", s_suffix(mon_nam(mtmp)));
|
You("meet %s gaze.", s_suffix(mon_nam(mtmp)));
|
||||||
|
stop_occupation();
|
||||||
if(poly_when_stoned(youmonst.data) && polymon(PM_STONE_GOLEM))
|
if(poly_when_stoned(youmonst.data) && polymon(PM_STONE_GOLEM))
|
||||||
break;
|
break;
|
||||||
You("turn to stone...");
|
You("turn to stone...");
|
||||||
@@ -1804,6 +1805,7 @@ gazemu(mtmp, mattk) /* monster gazes at you */
|
|||||||
else
|
else
|
||||||
You("are getting more and more confused.");
|
You("are getting more and more confused.");
|
||||||
make_confused(HConfusion + conf, FALSE);
|
make_confused(HConfusion + conf, FALSE);
|
||||||
|
stop_occupation();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AD_STUN:
|
case AD_STUN:
|
||||||
@@ -1815,15 +1817,18 @@ gazemu(mtmp, mattk) /* monster gazes at you */
|
|||||||
mtmp->mspec_used = mtmp->mspec_used + (stun + rn2(6));
|
mtmp->mspec_used = mtmp->mspec_used + (stun + rn2(6));
|
||||||
make_stunned(HStun + stun, TRUE);
|
make_stunned(HStun + stun, TRUE);
|
||||||
pline("%s stares piercingly at you!", Monnam(mtmp));
|
pline("%s stares piercingly at you!", Monnam(mtmp));
|
||||||
|
stop_occupation();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AD_BLND:
|
case AD_BLND:
|
||||||
if (!mtmp->mcan && canseemon(mtmp) && !resists_blnd(&youmonst)
|
if (!mtmp->mcan && canseemon(mtmp) && !resists_blnd(&youmonst)
|
||||||
&& distu(mtmp->mx,mtmp->my) <= BOLT_LIM*BOLT_LIM) {
|
&& distu(mtmp->mx,mtmp->my) <= BOLT_LIM*BOLT_LIM) {
|
||||||
int blnd = d((int)mattk->damn, (int)mattk->damd);
|
int blnd = d((int)mattk->damn, (int)mattk->damd);
|
||||||
|
|
||||||
You("are blinded by %s radiance!",
|
You("are blinded by %s radiance!",
|
||||||
s_suffix(mon_nam(mtmp)));
|
s_suffix(mon_nam(mtmp)));
|
||||||
make_blinded((long)blnd,FALSE);
|
make_blinded((long)blnd,FALSE);
|
||||||
|
stop_occupation();
|
||||||
/* not blind at this point implies you're wearing
|
/* not blind at this point implies you're wearing
|
||||||
the Eyes of the Overworld; make them block this
|
the Eyes of the Overworld; make them block this
|
||||||
particular stun attack too */
|
particular stun attack too */
|
||||||
@@ -1836,7 +1841,9 @@ gazemu(mtmp, mattk) /* monster gazes at you */
|
|||||||
couldsee(mtmp->mx, mtmp->my) &&
|
couldsee(mtmp->mx, mtmp->my) &&
|
||||||
mtmp->mcansee && !mtmp->mspec_used && rn2(5)) {
|
mtmp->mcansee && !mtmp->mspec_used && rn2(5)) {
|
||||||
int dmg = d(2,6);
|
int dmg = d(2,6);
|
||||||
|
|
||||||
pline("%s attacks you with a fiery gaze!", Monnam(mtmp));
|
pline("%s attacks you with a fiery gaze!", Monnam(mtmp));
|
||||||
|
stop_occupation();
|
||||||
if (Fire_resistance) {
|
if (Fire_resistance) {
|
||||||
pline_The("fire doesn't feel hot!");
|
pline_The("fire doesn't feel hot!");
|
||||||
dmg = 0;
|
dmg = 0;
|
||||||
@@ -1856,6 +1863,7 @@ gazemu(mtmp, mattk) /* monster gazes at you */
|
|||||||
if(!mtmp->mcan && canseemon(mtmp) &&
|
if(!mtmp->mcan && canseemon(mtmp) &&
|
||||||
couldsee(mtmp->mx, mtmp->my) && mtmp->mcansee &&
|
couldsee(mtmp->mx, mtmp->my) && mtmp->mcansee &&
|
||||||
multi >= 0 && !rn2(5) && !Sleep_resistance) {
|
multi >= 0 && !rn2(5) && !Sleep_resistance) {
|
||||||
|
|
||||||
fall_asleep(-rnd(10), TRUE);
|
fall_asleep(-rnd(10), TRUE);
|
||||||
pline("%s gaze makes you very sleepy...",
|
pline("%s gaze makes you very sleepy...",
|
||||||
s_suffix(Monnam(mtmp)));
|
s_suffix(Monnam(mtmp)));
|
||||||
@@ -1865,7 +1873,9 @@ gazemu(mtmp, mattk) /* monster gazes at you */
|
|||||||
if(!mtmp->mcan && canseemon(mtmp) && mtmp->mcansee &&
|
if(!mtmp->mcan && canseemon(mtmp) && mtmp->mcansee &&
|
||||||
(HFast & (INTRINSIC|TIMEOUT)) &&
|
(HFast & (INTRINSIC|TIMEOUT)) &&
|
||||||
!defends(AD_SLOW, uwep) && !rn2(4))
|
!defends(AD_SLOW, uwep) && !rn2(4))
|
||||||
|
|
||||||
u_slow_down();
|
u_slow_down();
|
||||||
|
stop_occupation();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default: impossible("Gaze attack %d?", mattk->adtyp);
|
default: impossible("Gaze attack %d?", mattk->adtyp);
|
||||||
|
|||||||
Reference in New Issue
Block a user